Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP实现MySQL数组_Php_Mysql_Database_Arrays - Fatal编程技术网

用PHP实现MySQL数组

用PHP实现MySQL数组,php,mysql,database,arrays,Php,Mysql,Database,Arrays,我的MySQL数据库设置如下: id | username ------------- 1 | name1 2 | name2 3 | name3 但是当我在PHP中使用这段代码时,它只读取名字。 注意:我需要它来读名字。这个id是用来做其他事情的 $sql = mysql_query("SELECT `username` FROM `black_list`"); $blacklist = array(); while($row = mysql_fetch_

我的MySQL数据库设置如下:

id | username
-------------
1  | name1
2  | name2
3  | name3
但是当我在PHP中使用这段代码时,它只读取名字。 注意:我需要它来读名字。这个id是用来做其他事情的

$sql = mysql_query("SELECT `username` FROM `black_list`");      
$blacklist = array();         
while($row = mysql_fetch_array($sql))
{
    $blacklist[] = $row;
    if(!in_array($name,$blacklist))
    {
          //User not protected
    } else {
          echo "User Protected";
    }
 }
如果有人能帮助我,那就太好了。谢谢:)

用这个

while($row = mysql_fetch_array($sql))
{
    $blacklist[] = $row['username'];
}

if(!in_array($name,$blacklist))
{
      echo "Coming Soon";
} else {
      echo "User Protected";
}
您可以这样做:

if (!in_array($name, mysql_fetch_array($sql))) {
    echo "Coming Soon";
} else {
    echo "User Protected";
}
但实际上,您应该在数据库级别执行此操作。这利用了数据库优化,不需要将整个表加载到内存中

$query = mysql_query(sprintf(
    'SELECT 1 FROM `skype_bl` WHERE `username`="%s"',
    mysql_real_escape_string($name)
));

if (mysql_num_rows($query)) {
    // Username not available
}

我想您应该比较一下
$name
是否在黑名单数组中。为此,您必须首先构建黑名单数组,然后将
$name
与之进行比较。在代码中,它只是将名称与
$blacklist
数组的当前内容进行比较,而不是将整个数组进行比较

如果您正在迭代第1行,它将把结果集第一行的值添加到
$blacklist
中,并将
$name
与该元素进行比较。当它转到第二行时,它会将结果集中第二行的值添加到数组中,因此这次它会将
$name
与数组中的两个元素(结果集中的前两行)进行比较。它还将在
$blacklist
中为结果集中的每个迭代检查
$name
。我想你不想要这个。因此,我们首先构建一个黑名单数组,然后只进行一次比较

//building the $blacklist array
while($row = mysql_fetch_array($sql)){
    $blacklist[] = $row['username'];
}

//Comparing $name with all elements of $blacklist which is now a full list
if(!in_array($name,$blacklist)){
      echo "Coming Soon";
}else{
      echo "User Protected";
}

请不要使用
mysql.*
函数来编写新代码。它们不再得到维护,社区已经开始。看到了吗?相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果选择PDO,。有人能告诉我$name变量定义在哪里吗?我看不出它的定义!他可能没有把它包括在他的帖子中,有抱负的AQIB他会得到未定义的变量错误,否则:)