2012-04-11 58 views
0

我希望所有用户都能够更新他们的关于页面。这里是我在我的php中用来查询MySQL更新的字符串。我收到一个错误。我究竟做错了什么?使用MySQL更新一行数据

$insert_query= "UPDATE user_info SET bio= $bio_ans, residence= $residence_ans, work= 
$work_ans WHERE user_id= $user_id"; 
mysqli_query($connect, $insert_query) 
    or die('error with query1'); 

回答

2

如果更新值不是整数,那么您需要围绕该值使用引号。

$insert_query= "UPDATE user_info 
        SET bio= '$bio_ans', 
        residence= '$residence_ans', 
        work = '$work_ans' WHERE user_id= '$user_id'"; 
mysqli_query($connect, $insert_query) 
or die('error with query1'); 
+0

这将只是插入字符串$ bio_ans等我认为,而我认为用户是通过连接将变量的ht evalue – 2012-04-11 22:17:14

+2

@PaulSullivan:不,单引号被PHP忽略,因为他们是在双引号。整个字符串是双引号字符,因此会发生可变插值。报价不会嵌套。 – Javier 2012-04-11 22:20:54

+0

我纠正 - im c#'er – 2012-04-11 22:21:42

0
$insert_query= "UPDATE user_info SET bio= $bio_ans, residence= $residence_ans, work=$work_ans WHERE user_id= $user_id"; 
mysqli_query($connect, $insert_query) 
    or die('error: $mysqli->error'); 

$mysqli->error会让你知道具体是什么地方出了错。

0

$ insert_query = “UPDATE USER_INFO SET生物='”。 $ bio_ans。 “',residence ='”。 $ residence_ans。“',work =
'”。$ work_ans。“'WHERE user_id ='$ user_id'”; mysqli_query($ connect,$ insert_query) 或die('error with query1');

+0

请注意,这种类型的字符串串联是可怕的不安全,你应该调用参数化程序 – 2012-04-11 22:19:20

0

除了没有引号(如RPM所示),你所做的真正错误的事情是使用变量插值创建SQL查询。

这仅仅是数值变量可以接受的,而且只有你强迫它只是在使用前转换为数值型。字符串转义应该是安全的,但非常容易出错(做两次,忘记添加新值等时添加)。最轻微的滑动将为SQL注入打开一个巨大的漏洞,这是破解Web应用程序的绝对最简单的方法。

使用带有参数绑定的预处理语句,您将会很安全。