2013-04-06 125 views
0

每次我单击提交保存到数据库中的数组中元素的名称时,我正在对变化进行投票。在当前回显元素后面显示的元素被输入到数据库中,而不是我单击的元素。有关如何使数组中的元素保存到数据库中的任何建议?我似乎无法弄清楚。随机数组并插入到数据库中;在当前之前插入元素

我试过使用listsunshift仍然得到相同的结果。

可以说回声显示在窗体中的值为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; 
} 

回答

0

HTML表单发送你的随机密钥使用名称=“名称”(即我这本身令人迷惑)。

通过$_POST['name']访问变量而不是$random

这样考虑的问题,在未来,在一审中始终做到

var_dump($_POST); 

在你的表单处理程序,以看看有什么变量可以被使用,以及什么样的价值观,他们随身携带。

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

+0

非常感谢我一定会在将来做所有事情抱歉,如果这是一个愚蠢的问题,我还是PHP新手。我会让你知道它是否有效 – vince 2013-04-06 16:49:43

+0

奇妙的作品非常感谢你,我被卡住了! – vince 2013-04-06 16:57:24

+0

'if(!($ stmt = $ mysqli-> prepare(“INSERT INTO table(id,name,votes)VALUES(id,'”。$ _ POST ['name']。'','“。$ votes。 “')”))){ echo“Prepare failed:(”。$ mysqli-> error。“)”。 $ mysqli->的错误; } $ id = 1; if(!$ stmt-> bind_param(“isi”,$ id,$ _POST ['name'],$ votes)){ echo“绑定参数失败:(”。$ stmt-> error。“)” 。 $ stmt->的错误; } if(!$ stmt-> execute()){ echo“执行失败:(”。$ stmt-> error。“)”。 $ stmt->的错误; } $ stmt-> close();'这些安全吗? – vince 2013-04-06 17:20:45