单个PHP保存页
希望有人能提供建议 我有3.PHP页面编号 page1.php page2.php page3.php 目前,我必须硬编码三个save.PHP页面,称为: save1.php save2.php save3.php 我当前保存到MySQL数据库的代码:单个PHP保存页,php,variables,save,Php,Variables,Save,希望有人能提供建议 我有3.PHP页面编号 page1.php page2.php page3.php 目前,我必须硬编码三个save.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
$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等
如果有人能帮忙,我将不胜感激
荷马。我建议你将“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
此处的值将为1/2/3,具体取决于您的页码。然后创建一个save.php页面,然后使用
$\u POST['pageNumber']。。。希望现在天气转晴。这是根据我理解你的问题 我不确定是否理解你的问题,但为什么不从循环开始呢
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);
函数DoSomething($responder\u id、$ip、$browser、$count)
{
settype($count,'integer');
如果($count<1)
{
抛出新异常($count参数不能小于1);
}
$queryVariables='';
$queryParams=array('ISSIIIIII',$responder_id,$ip,$browser);
$q=数组();
对于($i=1;$i这不是很漂亮,但应该做你想做的事情,也许你可以从中获得想法
$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();
}
}
您可以使用多维数组作为POST变量,而不是拆分POST索引键
所以
是通过
$\u POST['page1']['q1']
这比试着分开钥匙要容易得多
如果您需要了解要从哪个页面中绘制,可以查看:
if(empty($\u POST['page1']){
你能解释一下你想要什么吗?这可能是你想要的吗?好的。save1.php和save2.php以及save3.php之间的区别在哪里?你有相同的变量和相同的$\u POST[];
,同一个数据库,同一个表,同一个插入操作。每一页的q数不同,因此所有带有q数的部分都会不同,以及“?,?,”和“issiiii”部分也会不同。所有部分都会因问题的数量而不同。有意义吗?只需要更改变量名。不能使用带有ame名称三次。PHP将只保存变量的最后一个状态。只需更改变量名称,例如:第1页的变量1:$q1\u p1=$\u POST[“q1\u p1”];
第2页的变量1:$q1\u p2=$\u POST[“q1\u p2”];
并对表进行一次插入,或对第一页的答案进行一次插入,并对第1页和第2页的表进行两次更新。明白吗?或者您可以使用相同的变量名,但您需要为第1页添加一个隐藏字段,为第2页添加一个隐藏字段,为第3页添加一个隐藏字段。在save.php中,为隐藏文件创建if else语句。例如:if
hidden field名称是1变量使用数据。并进行sql插入。elseif
隐藏字段名称是2相同的elseif
隐藏文件DN名称是3相同的else
显示一些错误文本。如果您需要代码,请直接在此处请求。这很简单。他对您说,与我在上面的注释中对您说的相同。创建不同的变量名称.$\u POST[q1\u p1];
此q1\u p1将是代码等的html部分中的名称。您的输入必须具有名称q1\u p1才能获得工作$\u POST[q1\u p1];
:)而不是regexp(preg\u match),您可以拥有一个有效变量名数组并在数组中使用,非常感谢。