0

已解决:不知道为什么,但是在我重新加载 LAMP 堆栈后,一切都开始正常工作了。感谢大家的帮助!

我在 PHP 中准备了以下 MySQL 语句:

SELECT * FROM my_table WHERE (country LIKE 'Latvia' AND phone NOT LIKE '371%')

选择国家电话代码不正确的记录。在 php 中它看起来像这样:

$sql = "SELECT * FROM {$table_name} WHERE (
    country LIKE '$country' AND phone NOT LIKE '$phone_code%')";

虽然它完美地过滤了 phpMyAdmin 中的记录,但它在我的应用程序中不起作用——我得到了所有记录,包括正确的记录。非常感谢您的帮助!

编辑:这是更多代码的样子:

    while ($row = $this->fetch_array($result_set)) {
        $countries_to_check[$row['short_name']] = $row['calling_code'];
    }
    $i = 1;
    $sql = "SELECT * FROM {$this->table_name} WHERE ";
    foreach ($countries_to_check as $country => $phone_code) {
        if ($i > 1) {
            $sql .= " OR ";
        }
        $sql .= "(country LIKE '".$country."' AND phone NOT LIKE '".$phone_code."%')";
        $i++;
    }
    $result_set = $this->query($sql);

正如我在评论中所写,所有变量都不是空的,我已经回显了 $sql,甚至在 phpMyAdmin 中运行了这个查询,并且成功。

结果如下所示:

country     phone   
Lithuania           37028694529 * Correct
Latvia      37122171755 * Correct
Latvia      37522433153     * Incorrect
Latvia      +37126378238    * Incorrect
4

2 回答 2

0

或使用 卷曲语法

$sql = "SELECT * FROM {$table_name} WHERE (
    country LIKE '{$country}' AND phone NOT LIKE '{$phone_code}%')";
于 2013-11-08T13:58:31.590 回答
-4

应该是这样的:

$sql = "SELECT * FROM {$table_name} WHERE (
country LIKE '".$country."' AND phone NOT LIKE '".$phone_code."%')";
于 2013-11-08T13:50:40.797 回答