2014-06-18 79 views
0

修复我的代码后发生错误,请考虑将数据库中的用户ID全部设置为'0'!无法更新数据:我的更新命令中的SQL语法错误

Outprint:

用户ID: '23' ITEMID: '8204'

UPDATE SET预订用户ID = '23' WHERE ITEMID = '8204'

(错误:) 无法更新数据:您的SQL语法有错误;检查对应于你的MySQL服务器版本在1号线

修订版的PHP代码第二次使用接近“1”正确的语法手册:

<?php 
$con = mysql_connect("localhost", "root", "") OR die(' Could not connect'); 
$db = mysql_select_db('book1', $con); 
if (isset($_GET["userID"]) && isset($_GET["itemID"])){ 
$userID= (int)$_GET["userID"]; 
$itemID= (int)$_GET["itemID"]; 
$test = "userID: '$userID' itemID: '$itemID'"; 
echo $test; 
echo "<br>"; 
} 
if (!$con) { 
    die('Could not connect: '.mysql_error()); 
} 

echo("UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'"); 
echo "<br>"; 
$upd = mysql_query("UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'"); 

$retval = mysql_query($upd, $con); 
if(!$retval){ 
    die('Could not update data: '.mysql_error()); 
} 
echo "Updated data successfully\n"; 

$sql = mysql_query("SELECT * FROM booking"); 
if($sql === FALSE) { 
     die(mysql_error()); 
    } 

echo '<table class="fixed"> 
    <tr> 
     <th>itemID</th> 
     <th>EMPLOYEE ID</th> 
    </tr>'; 
while($row = mysql_fetch_array($sql)) { 
    echo "<tr>"; 
    echo"<td>".$row['itemID']."</td>"; 
    echo"<td>".$row['userID']."</td>"; 
    echo "</tr>"; 
} 

>

+0

'SELECT * FROM booking WHERE 1' ..... where 1 what? –

+0

'选择*从预订WHERE 1' - >删除明显不需要的'where'条件。 –

+0

没有修复错误,仍然是相同的 – Snoken

回答

0

确保你所得到的$userid$itemid完美。

然后看看$upd变量。您已经在运行mysql_query。更改$upd来,

$upd = "UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'"; 

则条件,

$retval = mysql_query($upd, $con); 
if(!$retval){ 
    die('Could not update data: '.mysql_error()); 
} else { 
    .... 
} 

它可能会解决您的错误。

+0

您已修复它!非常感谢您的帮助,这对我非常有帮助! :) – Snoken

+0

快乐编码:) –

+0

对于下一步我会找到一种方法,所以$ itemID必须存在于数据库中,如果不是$ retval将触发死亡。 – Snoken

3

变内插不适用于单引号。更改

mysql_query('UPDATE booking SET userID ="$userID" WHERE itemID ="$itemID"'); 

mysql_query("UPDATE booking SET userID ='$userID' WHERE itemID ='$itemID'"); 

但请注意,此代码很容易受到SQL注入。看到这个题目如何预防:How can I prevent SQL injection in PHP?

+0

它也没有修复错误。是的,我会开始使用PDO后,我得到这个功能正常工作。 – Snoken

+0

@ user3751216您是否设置了$ userID和$ itemID?在你的代码中,它们没有被定义。在调用update之前添加'$ userID = $ _GET [“userID”]'和'$ itemID = $ _GET [“itemID”]'' –

+0

我刚刚设置他们,他们应该工作得很好! – Snoken

0

如果你想显示用户ID数据,那么你将修改代码---

变化从

$sql = mysql_query(" SELECT * FROM booking WHERE 1"); 

这条线到

$sql = mysql_query(" SELECT * FROM booking WHERE 'userID' = '1'"); 

或者如果你想通过ite显示数据M id设定,那么你将改变代码----

$sql = mysql_query(" SELECT * FROM booking WHERE 'itemID' = '1'"); 
+0

我想要更新数据库,以便将用户ID导入到与itemID相同的变量下的数据库中 – Snoken