0

我有以下 PHP 变量:

$qStr1;

这在打印或回显时显示以下内容:

$q1, $q2, $q3, $q4, $q5

我有一个绑定参数代码:

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);

瓦杜普如下:

string(49) "$q1, $q2, $q3, $q4, $q5, $q6, $q7, $q8, $q9, $q10"
4

4 回答 4

1

它不是那样工作的。该方法需要几个参数。不,你给它一个,它有一根绳子。

有可能这样做,例如eval,但我建议您寻找不同的方法。例如,PDO 可以使用可以在循环中调用的名称进行绑定。

于 2013-07-25T13:45:28.307 回答
0

正如手册中所说

变量的数量和字符串类型的长度必须与语句中的参数相匹配。

该函数期望 x 参数与语句参数的数量相匹配,并且尚未编写将一个参数扩展为多个参数。

于 2013-07-25T13:43:59.873 回答
0

$qStr1 是一个字符串,其中包含变量的名称,而不是变量的内容。它只是不那样工作。

于 2013-07-25T13:44:45.793 回答
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"

希望这可以帮助!

于 2013-07-25T13:47:50.207 回答