2015-05-15 49 views
0

我可以回顯所有行嗎?這裏是我的腳本是什麼:如何回顯所有列的所有行?

$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']; 
} 

我的錯誤說注意:數組字符串轉換的代碼3線以上

IM猜測它,因爲這不是你如何顯示所有列&行...

+4

請[停止使用'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) 。 –

+0

嘗試嵌套你的第一個while循環。 – EdgeCaseBerg

回答

1

我同意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 

然後你可以有一個單一的循環,通過這些值。