我正在学习如何使用PHP向数据库添加值,但是我在某些代码库中要向数据库添加值时遇到了问题。
我在下面尝试了此代码,但每次收到此警告时: mysqli_stmt_bind_param():变量数与C:\ path \ to \ the \ file.php中已准备好的语句中的参数数不匹配第38行
第38行是具有 mysqli_stmt_bind_param()方法
的行$sql = "INSERT INTO times(uid,a,b,c,d,e,f,g,t12,t13,t14,t15,t16,t17,t18,t19,t20) VALUES ('?','?','?','?','?','?','?','?',?,?,?,?,?,?,?,?,?);";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../index.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "sssssssssssssssss", $uid, $a, $b, $c, $d, $e, $f, $g, $t12, $t13, $t14, $t15, $t16, $t17, $t18, $t19, $t20);
mysqli_stmt_execute($stmt);
echo "done!";
}
数据库中的 uid,a,b,c,d,e,f 和 g 列为 TINYTEXT 类型,其他为列是 TINYINT(1)类型。
第38行的$ sql变量中有17个问号,而 mysqli_stmt_bind_param() methon中有确切的17 s和参数。 我期望这些值将被添加到数据库的表中,但是我只能在网站上看到此警告,而数据库中没有任何值。
有人可以帮助我解决这个问题吗?
答案 0 :(得分:0)
尝试将第一行更改为:
$sql = "INSERT INTO times(uid,a,b,c,d,e,f,g,t12,t13,t14,t15,t16,t17,t18,t19,t20) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
SQL语句中不应使用参数标记?
。
答案 1 :(得分:0)
尝试不将问号占位符放在单引号内。 '?'
是由单个问号组成的字符串。它不是参数的占位符。