希望有人可以提供建议吗?
我有3个.PHP页面编号为
page1.php中 使page2.php page3.php
目前,我必须硬编码三个保存.PHP页面,如下所示:
save1.php save2.php save3.php
我保存到MySQL数据库的当前代码:
$q1 = $_POST["q1"];
$q2 = $_POST["q2"];
$q3 = $_POST["q3"];
$q4 = $_POST["q4"];
$q5 = $_POST["q5"];
$q6 = $_POST["q6"];
$q7 = $_POST["q7"];
$q8 = $_POST["q8"];
$proc = mysqli_prepare($link, "INSERT INTO tresults_bh_main (respondent_id, ip, browser, q1, q2, q3, q4, q5, q6, q7, q8) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);");
mysqli_stmt_bind_param($proc, "issiiiiiiii", $respondent_id, $ip, $browser, $q1, $q2, $q3, $q4, $q5, $q6, $q7, $q8);
我手动必须更改q1,q2,q3等以匹配第1,2和3页上的q。我想要做的是有一个.PHP保存页面可用于我的所有页面(有道理吗?)。
我无法理解的是如何对.PHP保存页面进行编码,以便它使用变量代替我对其进行硬编码。
我有一个存储以下信息的数组: $ qs ['questions'] - 存储,例如q1,q2,q3,q4等
如果有人可以提供帮助,非常感谢。
荷马。
答案 0 :(得分:1)
这不是很漂亮,但应该做你想做的事,也许你可以从中得到想法。
$list_variable = '';
$list_values = '';
$str = 'iss';
$array_data = array();
if (isset($_POST)) {
$array_data[] = &$respondent_id;
$array_data[] = &$ip;
$array_data[] = &$browser;
foreach ($_POST as $k => $v) {
if (!preg_match('/^q\d+$/', $k))
continue;
$str .= 'i';
$list_variable .= ", $k";
$list_values .= ", ?";
$array_data[] = &$_POST[$k];
}
if ($list_variable != '') {
array_unshift($array_data, $str);
$proc = mysqli_prepare($link, "INSERT INTO tresults_bh_main (respondent_id, ip, browser $list_variable) VALUES (?, ?, ? $list_values);");
call_user_func_array(array($proc, 'bind_param'), $array_data);
//$proc->execute();
}
}
答案 1 :(得分:0)
我建议你将'q'作为隐藏的表单的一部分,这样你就可以在mysql操作页面中收集它并插入它。
详细答案:
使用其他元素,如
<input type='text' name='pageNumber' value='1'> here value will be 1/2/3 depending on your page number. then create a single save.php page and there collect the variable using
$ _ POST ['pageNumber'] ...现在希望它清楚。这是我理解你的问题。
答案 2 :(得分:0)
我不确定你理解你的问题,但为什么不从一个循环开始呢?
function DoSomething($respondent_id, $ip, $browser, $count)
{
settype($count, 'integer');
if ($count < 1)
{
throw new Exception('The $count argument cannot be less than one.');
}
$queryVariables = '';
$queryParams = array('issiiiiiiii', $respondent_id, $ip, $browser);
$q = array();
for ($i = 1; $i <= $count; $i++)
{
$q[$i] = $_POST['q' . $i];
$queryVariables .= ', q' . $i;
$queryParams[] = $q[$i];
}
$query = 'insert into tresults_bh_main (respondent_id, ip, browser' . $queryVariables . ') values (' . str_repeat('?, ', $count - 1) . '?);';
$proc = mysqli_prepare($link, $query);
execSQL($proc, $queryParams);
}
DoSomething($respondent_id, $ip, $browser, 8);
其中execSQL
是从a user contributed note PHP文档中获取的方法。
答案 3 :(得分:0)
您可以使用多维数组作为帖子变量,而不是将POST索引键分开。
所以.....
<input type="text" name="question[page1][q1]" />
通过
阅读 $_POST['page1']['q1']
这比试图拆分钥匙更容易。
如果您需要知道从哪个页面绘制,可以查看:
if (empty($_POST['page1']) {