【问题标题】:Searching multiple tables and columns with a keyword in php [duplicate]在php中使用关键字搜索多个表和列[重复]
【发布时间】:2019-12-25 13:53:05
【问题描述】:

我正在构建一个使用 mysql 数据库作为后端的 android 应用程序。我正在尝试使用关键字搜索表和多列,并使用 php 以 json 格式将它们返回到 android 应用程序。

我尝试了从this question 获得的示例代码,但它似乎不起作用。

这是我的 php 代码

<?php
require "conn.php";
$key = $_POST["key"];
$array = array();

    $mysql_query = "(SELECT *, 'home' AS type FROM home WHERE food_name LIKE '%" . $key . "%' OR descrip LIKE '%" . $key ."%' OR user_name LIKE '%" . $key ."%'
        UNION
        SELECT *, 'c4c' AS type FROM cook4cash WHERE food_name LIKE '%" . $key . "%' OR descrip LIKE '%" . $key ."%' OR user_name LIKE '%" . $key ."%'
        UNION
        SELECT *, 'vendor' AS type FROM vendors_info WHERE user_name LIKE '%" . $key . "%'
        UNION
        SELECT *, 'customer' AS type FROM customers_info WHERE user_name LIKE '%" . $key . "%')";

mysql_query($query);
    $result = mysqli_query($conn, $mysql_query);

    if(mysqli_num_rows($result) > 0){
        session_start();

        while($row = mysqli_fetch_assoc($result)){
            $array[] = $row;
            //echo json_encode($row);
        }

        foreach($array as $new_array){
            $new_array['id'] . '<br/>';
            $new_array['food_name'] . '<br/>';
            $new_array['descrip'] . '<br/>';
            $new_array['price'] . '<br/>';
            $new_array['quantity'] . '<br/>';
            $new_array['image_url'] . '<br/>';
            $new_array['user_name'] . '<br/>';
            $new_array['profile_pic'] . '<br/>';
            $new_array['delivery_time'] . '<br/>';
            $new_array['delivery_cost'] . '<br/>';
            $new_array['location'] . '<br/>';
            $new_array['email'] . '<br/>';
        }
        echo json_encode(array("userInfo" => $array)); 
    } else {
        echo "No data was found";
    }
?>

当我使用邮递员进行测试时,它给出了错误代码 500(内部服务器错误)。 我想知道这段代码有什么问题。

【问题讨论】:

  • 这是一个很好的例子,SO 是如何伤害 PHP 社区的。您链接到的问题是 8 岁。那里的答案仅用于历史目的,不适用于现代 PHP。此外,它们容易受到 SQL 注入的攻击。
  • 请问这行是什么意思,mysql_query($query);就在原始查询之后?
  • @MuhammedShihabudeenLabbaA 我认为这是导致内部服务器错误的行。我把它拿出来,现在它返回状态码200。非常感谢。

标签: php mysql


【解决方案1】:

您检查过 PHP 错误日志吗?我猜问题的原因是第 14 行。您正在使用 mysqli_* 方法,但在第 14 行,您尝试使用 mysql_* 方法。我认为您应该删除此行的代码并重试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 2011-09-28
    • 2010-11-08
    • 2013-05-31
    • 2019-06-28
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多