PHP while循环增加变量

时间:2015-10-14 23:57:50

标签: php mysql variables

我有这个PHP代码。一切顺利,直到$ insert。我想得到的是循环期间的不同变量。

例如,它应该得到的第一个循环

$ A1

下一个循环是获得$ A2等等。我这样做是因为在我完成所有这些之后,变量将超过一百个。

我认为可行的是制作类似

的内容
$b='$A';

但显然它没有用。

<?php
include 'connect.php';

$A1=$_POST['a1'];
$A2=$_POST['a2'];
$A3=$_POST['a3'];
$examinee=$_POST['examinee'];
$Q1=$_POST['q1'];
echo $A1 . '<BR>'
    . $A2 . '<BR>'
    . $A3 . '<BR>'
    . $examinee . '<BR>'
    . $Q1;

$query = "SHOW TABLES LIKE '$examinee'";
$result = $conn->query($query);

if(mysqli_num_rows($result)==1) {
    echo "Table exists";
}
else {
    $create="CREATE TABLE $examinee (ano int NOT NULL AUTO_INCREMENT, answer varchar(255), PRIMARY KEY (ano))";
    $conn->query($create);


    $a=1;
    $b='$A';

    while ($a<4) {
        $insert="INSERT INTO $examinee (ano, answer) VALUES ('', '$b.$a')";
        $conn->query($insert);
        $a++;
    }
}
?>

我想要发生的是使用while循环将变量$ A1,$ A2,$ A3的值插入数据库中。

2 个答案:

答案 0 :(得分:1)

同样,我同意Ed Cottrell的观点,你对SQL注入很开放,但考虑到当前的实现,我认为你可以使用数组来做你想要的更快。请参阅下面的代码部分。

<?php
$post_array = array(
    $_POST['a1'],
    $_POST['a2'],
    $_POST['a3']
);

// printout statements and database connection here as above

for ($i = 0; $i < count($post_array); $i++) {
    $insert = "INSERT INTO $examinee (ano, answer) VALUES ('', " . $post_array[$i] . ")";
    $conn->query($insert);
}

更好的实施方法是使用prepared statements

答案 1 :(得分:1)

如果您尝试将存储在$ A1,$ A2,$ A3,$ A4中的值插入字符串中,请执行以下操作:

<?php

$A1 = 'some';
$A2 = 'set';
$A3 = 'of';
$A4 = 'inputs';

for ($a = 1; $a <= 4 ; $a++) {
  echo ${"A".$a};
}
?>

所以在你的情况下,它会是这样的:

$insert="INSERT INTO $examinee (ano, answer) VALUES ('', '" . ${"A" . $a} .  "')";

这不是我会去的路线......因为我不喜欢variable variables