【问题标题】:Empty mysql_query, can't figure it out空的mysql_query,想不通
【发布时间】:2012-12-13 00:54:14
【问题描述】:

我无法使此查询正常工作,我有 2 个表,其中一个包含客户信息,另一个包含产品信息。在查询数据库时尝试加入它们。

mysql_query(
    "SELECT client.id, client.email, client.prodid, prod.id, prod.name
    FROM client, prod
    WHERE client.id ="'.mysql_real_escape_string($_GET["id"]).'"
    AND client.prodid =prod.id"
);

但该查询不会返回任何内容。我究竟做错了什么?提前致谢。

【问题讨论】:

    标签: mysql sql database join


    【解决方案1】:

    你的引用是错误的。

    在方法中使用 " 开始字符串。在中间使用 "'.mysql_real_escape_string($_GET["id"]).'"。注意使用 "' 而不是 '"

    这应该会更好(从 PHP 的角度来看,我没有检查你的 SQL 语法):

    mysql_query(
        "SELECT client.id, client.email, client.prodid, prod.id, prod.name
        FROM client, prod
        WHERE client.id ='".mysql_real_escape_string($_GET["id"])."'
        AND client.prodid =prod.id"
    );
    

    【讨论】:

    • +1 我写了同样的答案,但你先到了! :-) 我很难看到 OP 的代码是如何工作的。
    • 如果 client.id 是数字,那么单引号也可以。
    • 尝试了所有这些,仍然是空查询。如果我直接通过 phpmyadmin 查询数据库,它可以工作,但不会嵌入到 PHP 中。很奇怪。
    • 您是否遇到 PHP 错误?由于您的报价使用错误,您应该早些拥有这些。如果不是,请更新您的问题,详细说明您的表、如何打开与数据库的连接以及所有其他可能相关的内容!
    【解决方案2】:

    您的报价似乎抵消了动态 ID 变量。如果您的 client.id 字段是数字,那么您应该删除 mysql_real_escape_string() 周围的单引号:

    mysql_query(
     "SELECT client.id, client.email, client.prodid, prod.id, prod.name
     FROM client, prod
     WHERE client.id = ".mysql_real_escape_string($_GET["id"])." AND client.prodid = prod.id"
    );
    

    如果它在 PHPMyAdmin 中有效,那么查询就可以了。启用调试并使用 var_dump():

    ini_set('display_errors','on');
    error_reporting(E_ALL);
    $result = mysql_query($sql_query);
    var_dump($result);
    

    【讨论】:

    • 没有解决问题,但是否显示特定错误?
    猜你喜欢
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多