0

我希望所有用户都能够更新他们的关于页面。这是我在 php 中用于查询 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');
4

4 回答 4

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');
于 2012-04-11T22:15:40.427 回答
0

除了缺少引号(如RPM所示)之外,您正在做的真正错误的事情是使用变量插值来创建 SQL 查询。

这仅适用于数字变量,并且仅当您在使用前将其强制转换为数字类型时才可接受。字符串转义据说是安全的,但很容易出错(重复两次,添加新值时忘记添加等)。稍有不慎就会为 SQL 注入打开一个巨大的漏洞,这绝对是破解 Web 应用程序的最简单方法。

使用带有参数绑定的准备好的语句,你会很安全。

于 2012-04-11T22:25:56.550 回答
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知道出了什么问题。

于 2012-04-11T22:17:29.850 回答
0

$insert_query=“更新用户信息集生物='”。$bio_ans。"', 住所='" 。$residence_ans."', work=
'".$work_ans."' WHERE user_id= '$user_id'"; mysqli_query($connect, $insert_query) 或 die('query1 错误');

于 2012-04-11T22:18:06.123 回答