2013-08-25 49 views
1

我花了數小時試圖從不同的表中選擇所有行,但仍然沒有運氣。我越來越:列名不明確mysql

column name firstname is ambiguous 

該表沒有任何關係,我只是想選擇所有的行,因爲我需要查詢的搜索匹配字符串的所有表。我有搜索欄。

有沒有更好的方法來選擇列號不匹配的多個表中的所有行。我試過UNION ALL,但它給了我一個錯誤。請幫助

$mydb = new mysqli('localhost', 'root', '', 'db'); 
$stmt = $mydb->prepare("SELECT * FROM `table1` t1 JOIN `table2` t2 ON joinitem.t1 = joinitem.t2 where firstname = ? "); 
stmt->bind_param('s', $firstname); 
echo $mydb->error; 
$stmt->execute(); 

回答

1

嘗試是在特定條款WHERE,像

SELECT * FROM `table1` t1 
    JOIN `table2` t2 ON t1.joinitem = t2.joinitem 
    WHERE t1.firstname = ? 
0

該錯誤來,因爲你有你的兩個表中列firstname。在沒有指定你的意思的情況下,SQL不能確定你想要查詢是基於table1的firstname還是table2的firstname。

爲了確保SQL知道您的意思,請在列名前添加表名。

另外,我相信JOIN條件應該是tablename.joinitem而不是joinitem.tablename

這裏是假設firstname你想要的是從table2一個例子:

SELECT * 
FROM `table1` t1 
JOIN `table2` t2 ON t1.joinitem = t2.joinitem 
WHERE t2.firstname = ? 
+0

的錯誤消失,但是當我嘗試呼應行'$結果= $ stmt-> get_result(); var_dump($ result); while($ row = $ result-> fetch_assoc()){ echo $ row ['firstname'];}'我得到空頁 – amdvb

+0

我是新來的PDO,所以我只是猜測。我認爲問題出在'$ stmt-> get_result()'上。嘗試使用'$ stmt-> fetchAll(PDO :: FETCH_ASSOC);'。有關參考資料,請參見[此鏈接](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – Sutandiono