大家好我以上代码遇到上述错误有问题,我已经尝试过在本网站现有主题的帮助下自行修复,请帮忙。
<?php
$product_name=$_POST['product_name'];
$unique_id=uniqid();
$product_price=$_POST['product_price'];
$product_colour=$_POST['product_colour'];
$product_description=$_POST['product_description'];
$product_care=$_POST['product_care'];
$size=$_POST['size'];
error_reporting(E_ALL);
ini_set('display_errors', '1');
if (!$product_name || !$unique_id || !$product_price || !$product_colour || !$product_description || !$product_care || !$size) {
echo "You have not entered all the required details.<br />"
."Please go back and try again.";
exit;
}
if (!get_magic_quotes_gpc()) {
$product_name = addslashes($product_name);
$unique_id = addslashes($unique_id);
$product_price = doubleval($product_price);
$product_colour = addslashes($product_colour);
$product_description = addslashes($product_description);
$product_care = addslashes($product_care);
$size = addslashes($size);
}
include "mysql.connect.php";
//Using Prepared Statements, they also protect against SQL injection-style attacks Addison Wesley (2008) PHP and Web Development 4th edn, p. 280
$query = "insert into products values(NULL, ?, ?, ?, ?, ?, ?, ?)";
if( ! $stmt = $db->prepare( $query ) ) {
echo 'Error: ' . $db->error;
return false; // throw exception, die(), exit, whatever...
} else {
// the rest of your code
}
$stmt->bind_param("sssd", NULL, $product_name, $unique_id, $product_price, $product_colour, $product_description, $Sproduct_care, $size);
$stmt->execute();
echo $stmt->affected_rows.'Item inserted into database.';
$stmt->close();
?>
这是mySQL表:
答案 0 :(得分:1)
$stmt->bind_param("sssd", NULL, $product_name,...);
你不能像那样传递NULL
。所有参数都必须是可以引用的变量名。
@ Fred-ii-在评论中提到了其他事项:类型数与传递的参数数不匹配。对于第一列中的NULL
值,您已在查询中使用它,因此无需将其作为参数传递。其他可能无法正常工作的事情是数据库中的斜线。您正在使用预准备语句,因此上面的片段为:
if (!get_magic_quotes_gpc()) {
$product_name = addslashes($product_name);
...
}
会弄乱您的数据。