将字符串数组与存储在数据库

时间:2018-03-27 18:38:47

标签: php mysql

我试图将包含一串水果的变量与存储在mysql数据库中的变量进行比较。我的代码如下所示:

$stored_fruits = mysqli_query($this->con, "SELECT fruits FROM fruit_table"); // uploaded fruits: "Apple Orange Pineapple"
$fruit_array = explode(", ", $fruits); // fruits are searched for and turned into an array: ["Apple", "Strawberry", "Banana"]
for($i = 0; $i < count($fruit_array); $i++) {
    if($fruit_array[$i] == substr($stored_fruits)) {
        echo "fruit match";
    }
}

$fruits是一串水果,取自用户输入的内容,$stored_fruits访问数据库中已有的水果串。 $fruits是一个看起来像["Apple", "Pineapple", "Strawberry"]的数组。 $stored_fruits看起来像是:"Strawberry Orange Banana"。我想将数组中的每个元素与上传的水果进行比较。如果有匹配,我希望它回显匹配。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

您需要获取包含查询结果的行。然后你可以使用explode()分隔水果,使用空格作为分隔符,并比较两个数组,看看它们是否有任何共同的结果。

$results = mysqli_query($this->con, "SELECT fruits FROM fruit_table");
$row = mysql_fetch_assoc($results);
$stored_fruits = explode(" ", $row['fruits']);

$fruit_array = explode(", ", $fruits);
if (!empty(array_intersect($stored_fruits, $fruit_array))) {
    echo "fruit match";
}

但最好将每个水果放在桌子的一个单独的一行中。然后你可以用循环获取所有的水果:

$results = mysqli_query($this->con, "SELECT fruit FROM fruit_table");
$stored_fruits = array();
while ($row = mysql_fetch_assoc($results)) {
    $stored_fruits[] = $row['fruit'];
}