【问题标题】:MySQL query returns null results when used in phpMySQL查询在php中使用时返回空结果
【发布时间】:2014-05-30 11:05:11
【问题描述】:

当我在 PHP 脚本中使用以下 Like 查询时,我得到空结果

    $MasjidName = $_GET['MasjidName'];
$Percent = "%";
$search = $Percent.$MasjidName.$Percent;

echo $search;

$sql = "SELECT * FROM `MasjidMaster` WHERE `MasjidName` LIKE '".$search."'";

// get a product from products table
$result = mysql_query($sql) or die(mysql_error());

我也尝试过以下方法

$result = mysql_query("SELECT * FROM `MasjidMaster` WHERE `MasjidName` LIKE '%moh%'") or die(mysql_error());

以下是我得到的空结果

{"masjids":[{"MasjidName":null,"Address":null,"Latitude":null,"Longitude":null}],"success":1,"masjid":[]}

下面添加的整个代码是我一直在努力工作的脚本

   <?php
    $response = array();
    require_once dirname(__FILE__ ). '/db_connect.php';;
    $db = new DB_CONNECT();
    if (isset($_GET["MasjidName"])) 
    {
            $MasjidName = $_GET['MasjidName'];
            $MasjidName = mysql_real_escape_string($MasjidName);  // you have to escape your variable here.
            $sql = "SELECT * FROM `MasjidMaster` WHERE `MasjidName` LIKE '%$MasjidName%'";
            $result = mysql_query($sql) or die(mysql_error());
            $response["masjids"] = array();

        if (!empty($result)) {
            // check for empty result
            if (mysql_num_rows($result) > 0) {


                while ($row = mysql_fetch_array($result)) {

                $row = mysql_fetch_array($result);

                $masjid = array();
                $masjid["MasjidName"] = $row["MasjidName"];
                $masjid["Address"] = $row["Address"];
                $masjid["Latitude"] = $row["Latitude"];
                $masjid["Longitude"] = $row["Longitude"];

                // success
                $response["success"] = 1;

                // user node
                $response["masjid"] = array();
                array_push($response["masjids"], $masjid);

                }
                // echoing JSON response
                echo json_encode($response);
            } else {
                // no product found
                $response["success"] = 0;
                $response["message"] = "No product found";

                // echo no users JSON
                echo json_encode($response);
            }
        } else {
            // no product found
            $response["success"] = 0;
            $response["message"] = "No product found";

            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        // required field is missing
        $response["success"] = 0;
        $response["message"] = "Required field(s) is missing";

        // echoing JSON response
        echo json_encode($response);
    }
    ?>

【问题讨论】:

  • 没有 WHERE 子句是否可以正常工作?
  • 请在这里打印SELECT * FROM MasjidMaster WHERE MasjidName的结果
  • 1) 首先不要使用mysql。使用mysqliPDO。 2)您的代码不安全。任何人都可以注入您的查询。 3)也许没有关于这种情况的记录。尝试使用 num_rows - 如果是 0 则没有结果并且您的查询很好。
  • 重复http://stackoverflow.com/questions/23948102/mysql-like-query-fails-in-php. :)
  • @michael 我试过没有 WHERE 子句,当没有 Where 子句时它会返回结果。我也在 MySQL 中测试了 Like 查询,它也确实在那里返回了结果。

标签: php mysql


【解决方案1】:

试试这个:

$MasjidName = $_GET['MasjidName'];
$MasjidName = mysql_real_escape_string($MasjidName);  // you have to escape your variable here.
$sql = "SELECT * FROM `MasjidMaster` WHERE `MasjidName` LIKE '%$MasjidName%'";
$result = mysql_query($sql) or die(mysql_error());

【讨论】:

  • 什么没用?一些错误信息?你能提供完整的代码和你的表中的示例数据吗? .我给你的这段代码很简单,应该可以工作。
  • 添加的脚本请重新检查
  • 删除那一行$row = mysql_fetch_array($result);
【解决方案2】:

尝试使用

$sql = "SELECT * FROM MasjidMaster WHERE MasjidName LIKE '".$search."'";

我尝试了SELECT * FROM Customers WHERE City LIKE 's%';,它给了我非常好的结果。但是当我尝试SELECT * FROM 'Customers' WHERE 'City' LIKE 's%'; 时,它给了我一个空结果。

只需删除 '' 并尝试一下。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2016-09-30
    • 2015-06-11
    • 2019-08-08
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多