无法通过第47行的引用传递参数2

时间:2013-11-18 21:07:47

标签: php

大家好我以上代码遇到上述错误有问题,我已经尝试过在本网站现有主题的帮助下自行修复,请帮忙。

<?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表:

enter image description here

1 个答案:

答案 0 :(得分:1)

$stmt->bind_param("sssd", NULL, $product_name,...);

你不能像那样传递NULL。所有参数都必须是可以引用的变量名。

@ Fred-ii-在评论中提到了其他事项:类型数与传递的参数数不匹配。对于第一列中的NULL值,您已在查询中使用它,因此无需将其作为参数传递。其他可能无法正常工作的事情是数据库中的斜线。您正在使用预准备语句,因此上面的片段为:

if (!get_magic_quotes_gpc()) {
$product_name = addslashes($product_name);
...
}

会弄乱您的数据。