2015-02-17 38 views
2

好的,所以我有一個數據庫,每個數據庫都有一個ID,一個名稱和一個文本值。MySQL/PHP - 獲取不同的行

我希望能夠分別打印每個特定的行。當我使用

$result = mysql_query("SELECT * FROM mytable", $db); 
$row = mysql_fetch_array($result); 
echo $row['text']; 

我只能打印第一行,因爲它沒有選擇任何細節。問題是,我不知道如何使用WHERE ID ='X',因爲我希望第一個打印第一列,第二個打印第二列等等(總共有13行)。我想在頁面上的不同位置回顯它們,因此只需一次調用所有內容並不是我要查找的內容。

現在,我必須在每次打印時使用上面的代碼,並在第一次打印時手動編輯WHERE ID ='1',第二次打印WHERE ID =' 2'等等,這在屁股上是相當痛苦的。

任何建議表示讚賞。

+2

的mysql_functions被折舊。你應該使用mysqli_來代替(http://php.net/manual/en/book.mysqli.php),或者更好的是使用PDO。 – Dave 2015-02-17 22:15:19

+0

你能寫出你的數據庫列的名字嗎 – 2015-02-17 22:45:49

+0

這些列是「ID」,「name」,「text」。我希望在ID爲1,2,3等等的「文本」中提取信息,但在代碼中的不同位置回顯它們。 – Qirel 2015-02-17 22:52:07

回答

1
$i = 1; 
$result = mysql_query("SELECT text FROM mytable WHERE ID > 0 AND ID < 5", $db); 
while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    echo $i . ' - ' . $row[0] . '<br/>'; 
$i++ 
} 

如果你想4個變量與文本在你的代碼的型動物的一部分使用,然後使用:

$result = mysql_query("SELECT text FROM mytable WHERE ID > 0 AND ID < 5", $db); 

$var1 = mysql_fetch_array($result, MYSQL_NUM); 
echo $var1[0]; 

$var2 = mysql_fetch_array($result, MYSQL_NUM); 
echo $var2[0]; 

$var3 = mysql_fetch_array($result, MYSQL_NUM); 
echo $var3[0]; 

$var4 = mysql_fetch_array($result, MYSQL_NUM); 
echo $var4[0]; 
+0

這就是我一直在尋找的,並使用它解決了我的問題!謝謝! – Qirel 2015-02-18 15:05:37

+0

@Eirik Guldbrandsen別忘了檢查答案是否正確 – 2015-02-18 16:57:46

4

保持通話mysql_fetch_array直到返回null:

while($row = mysql_fetch_array($result)) 
{ 
    echo $row['text'] . '<br/>'; 
} 

這顯示在documentation,這也將告訴你:

警告 這個擴展不贊成PHP的5.5.0,並且將來會被刪除。相反,應該使用MySQLi或PDO_MySQL擴展。另請參閱MySQL:選擇API指南和相關FAQ以獲取更多信息。此功能的替代方法包括:

+0

雖然我很欣賞,但這並不是我正在尋找的解決方案,因爲這會將所有內容整合到一個迴音中。我應該更具體一些,但我想在不同的地方迴應不同的行。 – Qirel 2015-02-17 22:33:11

+0

然後,您需要將行存儲在另一個數據結構(或使用這些行創建的輸出)中,或循環遍歷每個地方的結果集。 – prodigitalson 2015-02-17 23:12:04

2

這是如何遍歷所有記錄。

$result = mysql_query("SELECT text FROM mytable", $db); 
while ($row = mysql_fetch_array($result)) { 
    echo $row['text']; 
} 
2

下面是一個使用更面向對象的方法的例子:

1)設置如下的PDO對象:

$dbhost = '127.0.0.1'; 
$dbuser = 'yourDbUsername'; 
$dbpass = 'yourDbPassword'; 
$dbname = 'databaseName'; 

$dsn = 'mysql:host=' . $dbhost . ';dbname=' . $dbname; 
$dbAdapter = new PDO($dsn,$dbuser,$dbpass); 
$dbAdapter->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
$dbAdapter->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); 

2)使用PDO對象運行查詢和獲取結果集:

$sql = 'SELECT * FROM mytable'; 
$statementObject = $dbAdapter->query($sql); 
$resultSet = $statementObject->fetchAll(); 

3)迭代所得的陣列上:

foreach($resultSet as $row){ 
    echo $row['text'] . "<br />"; 
}