SELECT *
FROM `enzymes`
INNER JOIN `compounds`
ON compounds.compound_id = enzymes.compound_id
WHERE `ec` LIKE '1.11%'
它在phpmyadmin和mysql工作臺中工作。爲什麼以下SQL命令不適用於PHP中的mysql_query?
無論我是否反向使用mysql_real_escape_string並在適當的位置添加數據庫名稱,它都不起作用。 phpmyadmin php代碼也不起作用。
ERRORS:警告:mysql_fetch_assoc()預計參數1是資源,在布爾....
相同的錯誤給出了所有其他查詢的資源有關的功能
UPD :
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'];
}
,,,
解決方案:謝謝大家, - 布拉德首先給出了關鍵的答案。
$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.*
它究竟如何「不起作用」?你會得到什麼錯誤? –
加入時,最好使用'table.column'格式引用列(是顯式的),否則可能會遇到問題。 (例如'SELECT enzymes。*','WHERE compounds.ec LIKE'等) –
是'ec'是「酶」還是'compound'的列?如果是這樣,它是一種文本字段(甚至varchar)?如果是數字,「LIKE」將不起作用。 – bfavaretto