php - 为什么以下 SQL 命令不能与 PHP 中的 mysql_query 一起使用?

标签 php mysql phpmyadmin inner-join

SELECT       *
FROM         `enzymes`
  INNER JOIN `compounds`
  ON         compounds.compound_id = enzymes.compound_id
WHERE        `ec` LIKE '1.11%'

它适用于 phpmyadmin 和 mysql 工作台。

无论我是否使用 mysql_real_escape_string 对所有内容进行反引号并在适当的位置添加数据库名称,它都不会工作。 phpmyadmin php 代码也将无法工作。

错误:警告:mysql_fetch_assoc() 期望参数 1 为资源, bool 值给出......

所有其他依赖于查询资源的函数都会出现相同的错误

更新:

case 'ec':
    $dbl = mysql_connect(DB_ADDRESS, DB_USER, DB_PASSWORD);
    mysql_select_db("kegg", $dbl);
    //a)connection is fine
    //b)tried with explicitly providing the db name vs with pre-selection
    $sql = "SELECT * FROM enzymes INNER JOIN `compounds` ON compounds.compound_id=enzymes.compound_id";
    print_r($sql);
    $result = mysql_query( $sql, $dbl);
    print  mysql_error ($dbl);
    while ($row = mysql_fetch_assoc($result)) {
         print_r($row)
         $items[ $row['name'] ] = $row['compound_id'];          
    }

,,,

解决方案:谢谢大家,- Brad 首先给出了关键答案。

$sql = "SELECT enzymes.*, compounds.*\n"
. "FROM enzymes\n"
. " INNER JOIN compounds\n"
. " ON compounds.compound_id = enzymes.compound_id\n"
. "WHERE enzymes.ec LIKE '1.11%' LIMIT 0, 30 ";

最近出现了一个类似的主题,建议它仅在选择特定字段时有效。当需要所有数据时,关键的解决方案是解决歧义:

enzymes.*, compounds.*

最佳答案

鉴于该错误,mysql_query 返回 bool 值 FALSE,指示错误。试试这个:

$result = mysql_query(...your query here...) or die(mysql_error());

查看到底错误是什么。

关于php - 为什么以下 SQL 命令不能与 PHP 中的 mysql_query 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405939/

相关文章:

php - 仅为 cli 启用禁用功能

php - PHP 中的 Foreach 循环 - 遍历结果数组,将它们显示在 HTML 中的单个表格行中?

php - 使用 NAS Synology 每天运行一次 php 页面

php - mysql不是用PHP编译的吗?

php - 如何使用 php prepared-statement 从 MySQL 返回 Json 格式的对象数组

javascript - Codeigniter 提交功能不起作用

javascript - 如何在不使用模板的情况下插入变量?

mysql - phpMyAdmin 中的 SQL 保留字语法错误

php - 使用 jQuery 将 JSON 数据发送到 PHP

phpmyadmin : Cannot log in to the MySQL server