0

每次我单击提交数组中的元素名称时,我都会在保存到数据库时对更改进行投票。在当前回显元素输入数据库后显示的元素,而不是我单击的那个元素。关于如何将数组中的元素单击保存到数据库中的任何建议?我似乎无法弄清楚。

我已经尝试使用lists并且unshift仍然得到相同的结果。

可以说,回显显示了表单中的值的 example2。我单击 example2 但 example1 保存在数据库中。我不知道如何解决这个问题。谢谢您的帮助。

这是我的代码:

我正在使用的阵列设置:

$array = array("example1","example2","example3");
shuffle($array);
foreach($array as $random);

<?php echo array_pop($random);?>

HTML:

   <tbody>
         <tr>
                <form action="Voting_action.php" method="post">
            <td>
                <input type="submit" class="buttontable1" value="<?php echo $random ?>" name="name"/>
            </td>
                </form>
          </tr>
    </tbody>

PHP:动作

$mysqli = new mysqli("", "", "", "");
if ($mysqli->connect_error) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_error . ") " . $mysqli->connect_error;
}
if (!$mysqli->query("INSERT INTO table(id, name, votes) VALUES (id, '".$random."', '".$votes."')")) {
    echo "Multi-INSERT failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
4

1 回答 1

0

您的 html 表单使用 name="name" 发送您的随机密钥(这本身就令人困惑)。

$_POST['name']通过not访问该变量$random

考虑到将来出现这样的问题,首先总是这样做

var_dump($_POST);

在您的表单处理程序中,以查看可以使用哪些变量以及它们携带的值。

Ps 您在 db 查询中使用未过滤和未转义值的方式让您对 sql 注入攻击敞开大门,请查看 Mysqli 的准备好的语句来回避这个问题。

于 2013-04-06T16:46:46.650 回答