0
mysqli_stmt_bind_param($proc, "iss$is", $respondent_id, $ip, $browser, $qStr1);

正是这一点导致了问题,即使$qStr1包含文本 $q1、$q2 等,我认为$qStr1在代码中被视为单个变量,我想我需要提取文本然后使用它但是不知道怎么做?

使用下面提供的答案,我已修改并添加到:

$qStr = '';
    $markStr = '';
    for($i=1; $i<11; $i++)
    {
        $qStr .= 'q'.$i.'';
        $qStr1 .= '$q'.$i.'';
        $markStr .= '?';
        $is .= 'i';
        if($i < 10)
        {
            $qStr .= ', ';
            $qStr1 .= ', ';
            $markStr .= ', ';
        }
    }

$proc = mysqli_prepare($link, "INSERT INTO tresults (respondent_id, ip, browser, $qStr) VALUES (?, ?, ?, $markStr);");
mysqli_stmt_bind_param($proc, "iss$is", $respondent_id, $ip, $browser, $qStr1);

现在,我遇到了一个问题$qStr1- 即使这是循环并提供正确的输出 $q1、$q2 等 - 如果我手动将 $q1、$q2 等放入mysqli_stmt_bind_param和剩下的使用loop它可以正常工作。

我有以下代码:

$proc = mysqli_prepare($link, "INSERT INTO tresults (respondent_id, ip, browser, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");

mysqli_stmt_bind_param($proc, "issiiiiiiiiii", $respondent_id, $ip, $browser, $q1, $q2, $q3, $q4, $q5, $q6, $q7, $q8, $q9, $q10);

mysqli_stmt_execute($proc);

我想要实现的是一个loop(至少我认为是这样),它将q1, q2, q3, q4, q5 etc.自动放入该代码中,并将正确的数字?放入其中。

问题是否清楚,有人可以提供帮助吗?

4

2 回答 2

1

尝试这个

<?php
    $qStr = '';
    $markStr = '';

    for($i=1; $i<11; $i++)
    {
        $qStr .= 'q'.$i.'';
        $markStr .= '?';
        if($i < 10)
        {
            $qStr .= ', ';
            $markStr .= ', ';
        }
    }


    $proc = mysqli_prepare($link, "INSERT INTO tresults (respondent_id, ip, browser, $qStr) VALUES (?, ?, ?, $markStr);");
?>

$qStr&的输出$markStr将是这样的

$qStr = q1,q2,q3,q4,q5,q6,q7,q8,q9,q10
$markStr = ?,?,?,?,?,?,?,?,?,?
于 2013-07-25T10:51:03.477 回答
0

编辑!

$proc = mysqli_prepare($link, "INSERT INTO results 
          (respondent_id, ip, browser, $qStr) VALUES (?, ?, ?, 
            ?,?,?,?,?,
            ?,?,?,?,?);"
            );
mysqli_stmt_bind_param($proc, "iss$is", $respondent_id, $ip, $browser, 
            $q1,$q2,$q3,$q4,$q5,
            $q6,$q7,$q8,$q9,$q10
            );
mysqli_stmt_execute($proc);

这不是更容易阅读吗...?

于 2013-07-25T11:20:43.357 回答