我有以下PHP变量:
$qStr1;
打印或回显时,显示以下内容:
$q1, $q2, $q3, $q4, $q5
我有一个bind-parm代码:
mysqli_stmt_bind_param($proc, "iss$is", $respondent_id, $ip, $browser, $q1, $q2, $q3, $q4, $q5);
这样可以正常工作并正确保存到数据库中,但是,当我用变量替换各个部分时(见下文),它不起作用,我做错了什么?
mysqli_stmt_bind_param($proc, "iss$is", $respondent_id, $ip, $browser, $qStr1);
Vardump如下:
string(49) "$q1, $q2, $q3, $q4, $q5, $q6, $q7, $q8, $q9, $q10"
答案 0 :(得分:1)
它不起作用。该方法需要几个参数。不,你给它一个,它有一个字符串。
有可能这样做,例如eval
,但我建议你寻找不同的方法。例如,PDO可以使用可在循环中调用的名称进行绑定。
答案 1 :(得分:0)
如手册中所述
变量的数量和字符串类型的长度必须与语句中的参数匹配。
该函数要求x参数与语句参数的数量相匹配,并且尚未编写以将一个参数扩展为多个参数。
答案 2 :(得分:0)
$ qStr1是一个字符串,其中包含变量的名称,而不是变量的内容。它只是不起作用。
答案 3 :(得分:0)
从var_dump
,您可以看到$qStr1
只是一个包含所有变量名称(而不是值)的字符串。
如果您使用单引号来定义变量,则会发生这种情况。因此,如果您希望$qStr1
具有实际变量的值,那么您必须将其括在双引号中:
示例:强>
<?php
$q1 = '1';
$q2 = '1';
$q3 = '1';
$q4 = '1';
$q5 = '1';
$qStr1 = '$q1, $q2, $q3, $q4, $q5';
var_dump($qStr1);
$qStr1 = "$q1, $q2, $q3, $q4, $q5";
var_dump($qStr1);
<强>输出:强>
string(23) "$q1, $q2, $q3, $q4, $q5"
string(13) "1, 1, 1, 1, 1"
希望这有帮助!