这个脚本出了什么问题,它给了我bind_param
的错误if(isset($_GET['ID'])){
$page_id = $_GET['ID'];
$page_id = mysqli_real_escape_string($con, $page_id);
$select_query = $con->prepare("select * from save_data where ID='$page_id'")
or die(mysqli_error($con));
$select_query->bind_param('i', $page_id);
$select_query->execute();
$result = $select_query->get_result();
获取此错误
警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数与第23行的C:\ xampp \ htdocs \ mysql_login \ pictures.php中的绑定变量数不匹配
答案 0 :(得分:5)
您没有在查询中使用占位符。您无意中将要替换它的变量改为:
$select_query = $con->prepare("select * from save_data where ID='$page_id'")
应该是:
$select_query = $con->prepare("select * from save_data where ID=?")
答案 1 :(得分:2)
你想要这而不是你拥有的那条线:
$select_query = $con->prepare("select * from save_data where ID=?");
在您发布的代码中,您根本不使用参数绑定 - 您将变量直接插入到SQL字符串中。对于参数绑定,您需要插入?
占位符!
另外,请不要使用or die(mysqli_error($con)
进行调试。那非常hacky。要么让它失败并出现异常(mysqli确实有这个选项,对吗?)或编写自定义包装器来正确处理错误,而不需要每次执行查询时重复相同的代码!