1

我想我需要一个基本的 PHP / MYSQL 刷新,因为没有什么对我有用。

我的 MYSQL 表有两行信息。

 $results = mysql_query("SELECT Name, Description FROM products");
 $results = mysql_fetch_assoc($results);
 print_r($results);

打印时,我得到的只是一个结果。Array ( [Name] => Banana [Description] => It's a lovely banana ). 表中肯定有两个结果。为什么会这样?

其次,这个循环只返回每个结果的第一个字母,不知道为什么!

foreach($results as $res) {
?>
    Name : <?php echo $res['Name']; ?><br />
    Description : <?php echo $res['Description']; ?><br />

<?php } ?>

今天我的大脑被严重扰乱了:(

4

3 回答 3

4
while($res = mysql_fetch_assoc($results)){
?>
    Name : <?php echo $res['Name']; ?><br />
    Description : <?php echo $res['Description']; ?><br />

<?php } ?>
于 2013-03-05T17:27:27.080 回答
1

MySQL 已被弃用,您应该迁移到 PDO 或 MySQLi。要回答后者的问题,您应该使用准备好的语句(尽管在这种情况下它并不重要,因为您不需要清理查询)

$connection = new mysqli('localhost','root','pw','db');// start mysqli connection
$results = $connection ->prepare('SELECT Name, Description FROM products');// create the statement you want to work with
(object)array('Name'=>'','Description'=>'');// set up the variables you want to put retrieved data in
$results ->bind_result($res ->Name, $res ->Description);// attach the variables to the prepared statement
while($results ->fetch()){// execute the prepared statement
    // perform actions with $res->Name and $res ->Description
}
于 2013-03-05T17:39:09.267 回答
0

要回答您的第一个问题,这是因为mysql_fetch_assoc()一次只能从结果集中获取一行数据。通常,使用 while 循环来收集所有结果,如下所示:

$results = mysql_query("SELECT Name, Description FROM products");
$result_array = array(); // don't name this array the same as your result set ($results) or you will overwrite it.
while($row = mysql_fetch_assoc($results)) {
    $result_array[] = $row;
}

老实说,我不知道为什么您只会回显每个字段的第一个字母。它只是在屏幕上出现这种方式对您的 HTML 结构有问题吗?换句话说,如果您查看 HTML 源代码,它是否正确显示?

于 2013-03-05T17:30:52.670 回答