Php 检查数组中的元素,如果没有';数据不存在于数据库中

Php 检查数组中的元素,如果没有';数据不存在于数据库中,php,mysql,sql,arrays,select,Php,Mysql,Sql,Arrays,Select,问题出在标题中: 我必须找出数组中是否存在该元素,以及它是否没有将数据放入数据库 代码如下: $day = date('Y-m-d H:i:s'); $logins_array = array(); $logins=mysql_query("SELECT login FROM users"); while($login=mysql_fetch_array($logins)) { $logins_array[]=$login; } if(!(in_array('"'.$_POST['

问题出在标题中: 我必须找出数组中是否存在该元素,以及它是否没有将数据放入数据库

代码如下:

$day = date('Y-m-d H:i:s');
$logins_array = array();

$logins=mysql_query("SELECT login FROM users");

while($login=mysql_fetch_array($logins))
{
    $logins_array[]=$login;
}

if(!(in_array('"'.$_POST['login'].'"',$logins_array)))
{
    mysql_query('INSERT INTO users(login,password,email,reg_data) VALUES ("'.$_POST['login'].'","'.$_POST['password'].'","'.$_POST['email'].'","'.$day.'")');
} 
这段代码可以工作,但数据总是插入到数据库中

我怎样才能正确地做呢


谢谢)

您获取它的方式错误,然后分配整个数组而不是要分配的元素。应该是这样的

while($login=mysql_fetch_assoc($logins))
{
    $logins_array[]=$login["login"];    //add only the relevant value, not the whole array.
}
in_数组应该是这样的

if(!(in_array($_POST['login'],$logins_array)))      // without those extra quotes

但是,这段代码非常容易受到
INSERT

的攻击,因为它不起作用((关于数据库:我在sql注入中查看了它,谢谢))还可以像我刚才添加的那样更新
in_array
语句。那些引用在那里是无用的。