PHP - mysql_fetch_assoc()问题

时间:2013-09-15 10:33:50

标签: php mysql

我是PHP的新手,我正在尝试学习如何显示我从mysql数据库(phpmyadmin)中选择的数据。我目前的PHP代码包含2个文件connect.inc.php和connecting.php:

conncet.inc.php是用于与数据库建立连接的文件:

<?php
//Varialbles
//MYSQL details
$mysql_server='localhost';
$mysql_user='root';
$mysql_user_pass='12345678';
$mysql_db='test';

//Messages
$db_conn_error='Could not connect to database';

if(mysql_connect($mysql_server, $mysql_user, $mysql_user_pass)
and mysql_select_db($mysql_db)){
echo 'Connection is ok'.'<br>';
}
else
{
echo 'Connection is not ok';
}
?>

而另一个文件(connecting.php)应显示名为food的特定表中的任何记录:

<?php
require 'connect.inc.php';

$query = "SELECT 'food', 'calories' FROM food ORDER BY 'id'";


if ($query_run = mysql_query($query)){

    while($query_row = mysql_fetch_assoc($query_run)){
        $food = $query_row['food'];
        $calories = $query_row['calories'];

        echo $food . ' has '.$calories.' calories.<br>';
    }

}
else
{
echo 'Query Failed';
}
?>

其他详情:

  • 服务器名称:localhost
  • user:root
  • 密码:12345678
  • 数据库名称:test
  • 表名:food
  • 字段名称:id,food,calories,healthy_unhealthy

问题是每当我在connection.php文件中执行代码时,我总是得到以下内容:

  • 连接正常
  • 食物有卡路里的热量。
  • 食物有卡路里的热量。

何时应该说

  • 连接正常
  • 披萨有1000卡路里
  • 沙拉含有200卡路里

非常感谢帮助:)

提前致谢,

乔:)

6 个答案:

答案 0 :(得分:2)

这是因为您在查询中使用单引号('

$query = "SELECT 'food', 'calories' FROM food ORDER BY 'id'";

此查询将输出为:

food | calories
-----|---------
food | calories
food | calories

SQLFiddle

单引号(')用于字符串文字。如果要转义列名,请使用反引号(`)instesd。

$query = "SELECT `food`, `calories` FROM food ORDER BY `id`";

SQLFiddle

注意:请为列名和表名使用不同的名称。目前,您使用food作为列名和表名。请避免这种情况。

答案 1 :(得分:2)

在列和表名中使用`而不是',如下所示:

query= "SELECT `food`, `calories` FROM `food` ORDER BY `id`";

答案 2 :(得分:1)

尝试

$query = "SELECT `food`,`calories` FROM `food` ORDER BY 'id'";

答案 3 :(得分:1)

不使用单引号将您的查询更改为此内容:

$query = "SELECT food, calories FROM food ORDER BY id";

答案 4 :(得分:0)

请检查您的查询

尝试以下行并检查错误

$sql= mysql_query("SELECT * FROM food ORDER BY id") or mysql_error();

答案 5 :(得分:0)

您对列名和表名使用单引号(')。使用反引号(`)代替,一切都会好的。单引号用于php中的字符串。