2012-03-08 89 views
0

我正在处理我的第一个PHP/MySQL项目,并且我已经获得了基本的登录和INSERT查询工作,但没有更新。这是我的第一次更新,它只是一个状态和邮编的行。有什么问题吗?PHP SQL更新查询语法

$dbc = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$state=$_POST['state']; 
$zip=$_POST['zip']; 

$custnum = 0; 
$sql="UPDATE $tbl_name SET state = '$state', zip = '$zip', WHERE custnum = '$custnum'"; 
$result = mysqli_query($dbc, $sql) 
or die('Error querying database.'); 
+1

你不前需要最后一个逗号的 “WHERE” 条款 – 2012-03-08 16:32:37

+1

您* *'混合和mysql_''mysqli_'功能,这是行不通的。 – 2012-03-08 16:33:54

+2

此外,您显示的代码易受[SQL注入](http://php.net/manual/en/security.database.sql-injection.php)的影响。使用适当的卫生方法(=在这种情况下,'mysql_real_escape_string()'),或切换到PDO并准备好语句。 – 2012-03-08 16:34:23

回答

2

我想你需要摆脱在WHERE之前的逗号。

+0

谢谢,这工作。 – 2012-03-08 17:45:23

0
$dbc = mysql_connect($host, $username, $password)or die("cannot connect"); //don't need quotes 
    mysql_select_db($db_name,$dbc)or die("cannot select DB"); //added the $dbc (connection link) as a second parameter 

    $state=mysql_real_escape_string($_POST['state']); //Should make it safe! 
    $zip=mysql_real_escape_string($_POST['zip']); //Should make it safe! 

    $custnum = 0; 
    $sql="UPDATE $tbl_name SET state = '$state', zip = '$zip' WHERE custnum = '$custnum'"; 

//removed an extra comma 

    //Notice that $tbl_name isn't defined! 
    u 
    $result = mysql_query($sql) 
    or die('Error querying database.'); //from mysqli to mysql 
3

之前 “WHERE” 条款删除最后一个逗号。另外,如果刚开始时,在为字符串使用双引号时,将括号括在变量名称周围很合适。帮助您更好地区分变量。

Pekka在他的评论中也是正确的,你在混合mysql和mysqli函数。改用mysql_query()。

0

看起来像SQL语法错误:删除之前WHERE

+0

哇,工作,谢谢。 – 2012-03-08 17:45:00

0

如果(isset($ _ POST [ '更新'])){ $ 名称= $ _ POST [ '名称']逗号; // echo $ name;死; $ surname = $ _ POST ['surname'];

$upd="update table_name SET name='$name',surname='$surname' where id=$id"; 
mysql_query($upd); 

}

1
$suitno =mysqli_real_escape_string($ecms,$_POST['suitno']);//protecting sql injection 
$defendant=mysqli_real_escape_string($ecms,$_POST['defendant']);//protecting sql injection 
$casenature=mysqli_real_escape_string($ecms,$_POST['casenature']);//protecting sql injection 

$sql="UPDATE causelist SET suitno='{$suitno}', 
casenature='{$casenature}' WHERE suitno='{$suitno}'"; 
$result = mysqli_query($ecms, $sql) 
or die('Error querying database.'); 
+0

你应该详细解答你的答案 – Massimo 2017-03-08 06:05:43