MySQL查询拉一行并显示结果的第一个字母

时间:2013-03-05 17:25:07

标签: php mysql

我想我需要一个基本的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 } ?>

我的大脑今天严重受挫:(

3 个答案:

答案 0 :(得分:4)

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

<?php } ?>

答案 1 :(得分: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
}

答案 2 :(得分: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源代码,它是否正确显示?