当我使用将多个变量组合为一个的 php 变量并在绑定参数中使用该变量时,它不起作用并且显示错误。
让我解释:
我将发布数据、sql 列和 sql 表详细信息存储在如下变量中:
$user_input_ab = $_POST['ab'];
$user_input_cd = $_POST['cd'];
$user_input_ef = $_POST['ef'];
$user_input_gh = $_POST['gh'];
$sqlTable = 'abcd_list';
$sqlColumns = 'ab, cd, ef, gh';
$sqlValues = $user_input_ab .','. $user_input_cd .','. $user_input_ef .',' . $user_input_gh;
SQL Prepare 语句如下:
$stmt = $mysqli->prepare("INSERT INTO $sqlTable ($sqlColumns) VALUES (?, ?, ?, ?)");
到目前为止,上述工作。但是如果我在 bind 语句中使用组合变量$sqlValues
,它就不起作用:
$rc = $stmt->bind_param("ssss", $sqlValues);
以上不起作用。它给出了以下错误:
Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: Number of elements in type definition string doesn't match number of bind variables
但是,如果我将 bind_param 更改为此,那么它可以工作:
$rc = $stmt->bind_param("ssss", $user_input_ab, $user_input_cd, $user_input_ef, $user_input_gh);
那么为什么它不起作用呢?该错误表示元素的数量不匹配,但是当我使用 时$sqlValues
,是否应该填充其中的 4 个元素?
如果您想知道我为什么要使用变量,那只是为了让将来的编辑更容易,这样我就可以保持其余的 sql 查询不变。