我同意Jay Blanchard的看法,你應該使用mysql_ *函數以外的東西。
首先錯誤信息是由於您使用的是地方的字符串數組:
"SELECT * FROM table2 where id=$allrowsandcolumns"
$allrowsandcolumns
是從數據庫結果的數組,其中包含從COL1,COL2,COL3,COL4第一個查詢。它看起來像這樣:
array (
"col1" => value1
"col2" => value2
"col3" => value3
"col4" => value4
)
我想我們可以同意,試圖把一個數組放在一個字符串將無法正常工作。相反,你可能想要這樣的事情:
"SELECT * FROM table2 where id=" . $allrowsandcolumns["col1"]
或者無論哪列是與table2匹配的id列。
只要回顯出所有的行...這對我來說就像你是編程新手一樣。但嵌套很容易解釋:
現在你有這樣的:
$options=mysql_query("SELECT col1, col2, col3, col4 FROM table1");
while($allrowsandcolumns=mysql_fetch_array($options)) {
$options1=mysql_query("SELECT * FROM table2 where id=$allrowsandcolumns");
}
while($rows=mysql_fetch_array($options1)) {
echo $rows['name'];
}
這不是做你覺得它在做什麼。它將循環遍歷table1中的每一行,然後使用中的最後一個在$options
中提取並回顯名稱。你需要做的是像這樣嵌套循環:
$options=mysql_query("SELECT col1, col2, col3, col4 FROM table1");
while($allrowsandcolumns=mysql_fetch_array($options)) {
$options1=mysql_query("SELECT * FROM table2 where id= " . $allrowsandcolumns["col1"]);
while($rows=mysql_fetch_array($options1)) {
echo $rows['name'];
}
}
這就是說。這是一個壞主意。循環SQL查詢對性能來說很糟糕。在追求知識的過程中,查找連接查詢,以便您可以一次檢索所有這些結果。像這樣:
SELECT col1,col2,col3,col4
FROM table1 JOIN table2 on table2.id = table1.col1
然後你可以有一個單一的循環,通過這些值。
請[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。瞭解[準備的陳述](http://en.wikipedia.org/wiki/Prepared_statement),並考慮使用PDO,[它不像你想象的那麼難](http://jayblanchard.net/demystifying_php_pdo.html) 。 –
嘗試嵌套你的第一個while循環。 – EdgeCaseBerg