好吧,我有一个数据库,每个数据库都有一个ID,一个名字和一个textvalue。
我希望能够单独打印每个特定行。当我使用
$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 '等等,这对屁股来说相当痛苦。
任何建议都表示赞赏。
答案 0 :(得分: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指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:
答案 1 :(得分:2)
这是迭代所有记录的方法。
$result = mysql_query("SELECT text FROM mytable", $db);
while ( $row = mysql_fetch_array($result) ) {
echo $row['text'];
}
答案 2 :(得分: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 />";
}
答案 3 :(得分: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];