用PHP实现MySQL数组
我的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_
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他会得到未定义的变量错误,否则:)