【发布时间】:2014-08-14 03:01:19
【问题描述】:
我第一次尝试使用准备好的语句以避免 sql 注入,但是当我尝试插入或更新我的数据库时似乎遇到了问题,我使用这些行来做我想做的事:
插入:
$stmt = $con->prepare("INSERT INTO my_array (image1,image2,image3,image4, info, type, lat, lng, date_created, status, created_by, closed_by, date_finished) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") ;
$stmt->bind_param('bbbbssddsssss', $image1, $image2, $image3, $image4, $info, $type, $lat, $long, $date, $opened, $user, $closed_by, $closed_by, $date_finished);
$stmt->execute();
$result = $stmt->get_result();
更新:
$stmt = $con->prepare("UPDATE users SET fullname = IF(LENGTH(?) = 0, fullname, ?), email = IF(LENGTH(?) = 0, email, ?), phone_num = IF(LENGTH(?) = 0, phone_num, ?) , address = IF(LENGTH(?) = 0, address, ?) WHERE username = '$user'") ;
$stmt->bind_param('ssssiiss',$fullname, $fullname, $email, $email, $phone_number , $phone_number, $address, $address);
$stmt->execute();
$result = $stmt->get_result();
在这两种情况下,我都得到一个“错误”的结果。
【问题讨论】:
-
检索返回的mysql错误并开始。
-
我没有任何 sql 错误
-
如果您的查询中有错误,则一定有错误。如果不是,则查询没有问题。
-
在假设成功之前不要低估错误。 php.net/manual/en/function.error-reporting.php
-
如果我没记错的话,您尝试在插入时将 14 个变量绑定到 13 个值。关于您的更新:为什么不为用户名使用参数 - 可能是您传递空值?
标签: php mysql prepared-statement