2017-05-09 111 views
-2

数据似乎没有要任何语法错误的选择查询工作。然而,当我尝试插入值时,它不会在我的表中更新。代码中似乎没有任何错误。查询似乎在VS中工作正常。 我检查了相同标题的帖子,并试图应用到我的代码迄今为止没有工作。这里是我第一次遇到问题的代码。 我的问题是我如何补救这一点,并更新我的数据库中的表?任何帮助,将不胜感激,谢谢您的阅读PHP INSERT查询失败更新表

$ServerName = 'SQL2008.net.dcs.hull.ac.uk'; 
$connectionInfo = array("Database"=>"rde_505405"); 
$conn = sqlsrv_connect($ServerName,$connectionInfo); 
if($conn== false) 
{ 
    echo 'Connection could not be established'; 
    exit('Disconnecting'); 
} 
else 
{ 
    echo 'Database located!'; 
    echo '</br>'; 
    $StaffNUM = $_POST["SID"]; 
    $FirstName = $_POST['Fname']; 
    $Surname = $_POST['Sname']; 
    $Location = $_POST['Location']; 
    $Date = date('Y-m-d h:i:sa'); 

    echo 'First Name: ', $FirstName; Echo'</br>,</br>'; 
    echo 'Surname: ', $Surname; Echo'</br>,</br>'; 
    echo 'Location: ', $Location; Echo'</br>,</br>'; 
    echo 'Entered at: ', $Date; Echo'</br>,</br>'; 

    $SQLquery = ("INSERT INTO Location (STAFFID, 'First Name', Surname, 
    Location, Time) 
    VALUES ('".$StaffNUM."''".$FirstName."', '".$Surname."', 
    '".$Location."', '".$Date."');"); 
    $results = sqlsrv_query($conn, $SQLquery); 
    echo '<br>'; 
    echo '<br>'; 
    echo 'Entry added successfully';  
    } 
sqlsrv_close($conn); 
+1

您的脚本处于[ SQL注入攻击(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)有一个看看发生了什么事[小博表(HTTP:// bobby-tables.com/)即使[如果你逃避的投入,它不是安全!(http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string )使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 –

+0

该代码是可怕的,但是你错过'之间的逗号“‘$ StaffNUM。‘‘'和'’’。$名字。’”,'输入 – junkfoodjunkie

+0

@junkfoodjunkie感谢,没有任何借口可以不必为我做编码。 – Tenkin

回答

0

你缺少$StaffNUM$FirstName之间用逗号

请更改代码的SQL查询为:

$SQLquery = ("INSERT INTO Location (STAFFID, First Name, Surname, Location, Time) VALUES ('$StaffNUM', '$FirstName', '$Surname', '$Location', '$Date')"); 

这应该工作: )

+0

嗨你的建议不幸没有奏效,表格在每个单元格中仍然显示为空 – Tenkin

0

我到底图什么是错的一样,我的解决方案是硬编码在VS其中强调错误的查询。 比如我才明白,列First Name是一个贫穷的名称由于空间并删除了空间,使其FirstName。 我还修改了@ Thaiseer的更正,为每个变量添加''。 最后我的表数据类型设置为datetime允许我使用的功能GETDATE()

修改代码

$SQLquery = "INSERT INTO Location (STAFFID, FirstName, Surname, Location, Time) 
    VALUES ('$StaffNUM','$FirstName', '$Surname', '$Location', GETDATE())"; 

希望这有助于其他人谁发现自己处于类似的情况

0

围成的领域` `也不要使用保留字作为数据字段,

$SQLquery = ("INSERT INTO Location (`STAFFID`, `First Name`, `Surname`, `Location`, `Time`) 
    VALUES ('$StaffNUM', '$FirstName', '$Surname', '$Location', '$Date')");