2015-02-17 58 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 />"; 
}