我想我需要一个基本的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 } ?>
我的大脑今天严重受挫:(
答案 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源代码,它是否正确显示?