绑定参数中的PHP变量

时间:2013-07-25 13:36:25

标签: php sql sqlbindparameter

我有以下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"

4 个答案:

答案 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"

希望这有帮助!