如何创建数组数据库行,然后查找数组中是否存在值?

e4eetjau  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(264)

我试图从db行中搜索数组中的给定值-

$path = '1.jpg';

$result = mysqli_query("SELECT * FROM table WHERE myname='$myuser'");
$mypath = array();
while($row = mysqli_fetch_assoc($result)){
    $mypath[]= $row['path'];
}

if(array_search($path, $mypath)) {
    echo 'image exist';
}else{
    echo 'image not found in array';
}

但这行不通,我做错什么了?
谢谢!

laximzn5

laximzn51#

当一个更好的sql语句可以更快地完成任务时,为什么要构建一个数组并使用数组搜索呢?
如果将查询更改为此项,它将仅选择名称和路径匹配的行:

$path = '1.jpg';

$result = mysqli_query("SELECT * FROM table WHERE myname='$myuser' AND path='$path'");
if(mysqli_fetch_assoc($result)){
    echo 'image exist';
}else{
    echo 'image not found';
}

这应该在没有阵列开销的情况下完成相同的工作。
但是,请注意,如果路径或名称是用户提供的,并且未经检查就进入查询,那么代码很容易像现在这样进行sql注入。因此,在查询中使用这些值之前,应该使用mysqli\u real\u escape\u string()对这些值进行转义。

相关问题