首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用PHP查询我的MySQL数据库时,如何解决这个未定义的索引错误?

问在使用PHP查询我的MySQL数据库时,如何解决这个未定义的索引错误?
EN

Stack Overflow用户
提问于 2014-09-22 16:51:52
回答 5查看 22.1K关注 0票数 2

我正在通过新波士顿Youtube视频教程学习PHP。

当我在本地主机上运行PHP脚本中的查询(脚本在错误消息下面)时,我会得到一个重复两次的错误消息。请参见下面的错误消息。

我希望能够在PHP脚本中运行这个查询,并返回我所查询的信息。

运行时的index.php错误消息

注意:未定义的索引:第10行/Applications/XAMPP/xamppfiles/htdocs/Database_To_Server/index.php中的卡路里 注意:未定义的索引:第10行/Applications/XAMPP/xamppfiles/htdocs/Database_To_Server/index.php中的卡路里

码

index.php

代码语言:javascript
复制
<?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'];
    }

} else {
    echo mysql_error();
}

?>

connect.inc.php

代码语言:javascript
复制
<?php
$conn_error = "Could not connect."; 

$mysql_host = 'localhost';
$mysql_user =  'root';
$mysql_pass = '';

$mysql_db = 'a_database';

if (!@mysql_connect($mysql_host, $mysql_user, $mysql_pass) || !@mysql_select_db($mysql_db)) {
    die($conn_error);
} 
?>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-22 16:53:21

您使用了错误的标识符 (以及列名之间缺少的逗号)

代码语言:javascript
复制
$query = "SELECT 'food' 'calories' FROM `food` ORDER BY 'id'";

从关于'的id中删除id

代码语言:javascript
复制
$query = "SELECT `food`, `calories` FROM `food` ORDER BY id";
  • 如果 food不是列的一部分(这似乎是表的名称)

做

代码语言:javascript
复制
$query = "SELECT `calories` FROM `food` ORDER BY id";
  • 只是一个洞察力。

脚注:

您现在的代码对SQL注入开放。

使用准备好的陈述或有准备陈述的PDO。

编辑

若要修复当前查询,请执行以下操作:

代码语言:javascript
复制
require 'connect.inc.php';

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

$result = mysql_query($query) or die(mysql_error());

while($query_row = mysql_fetch_assoc($result)){
    echo $query_row['food']. " - ". $query_row['calories'];
    echo "<br />";
}

作为一种学习曲线,您应该使用mysql_error()作为您的优势,而不是仅仅显示Could not connect.,如果存在DB连接问题,那么就不会显示真正的错误是什么。

例如,:

代码语言:javascript
复制
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
echo "Connected to MySQL<br />";
mysql_select_db("a_database") or die(mysql_error());
echo "Connected to Database";
?>

或来自手册 - mysql_error()

代码语言:javascript
复制
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("nonexistentdb", $link);
echo mysql_errno($link) . ": " . mysql_error($link). "\n";

mysql_select_db("kossu", $link);
mysql_query("SELECT * FROM nonexistenttable", $link);
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
?>

上面的示例将输出类似于:

1049:未知数据库“无存”b 1146:表“kossu.nonexistenttable”不存在

票数 16
EN

Stack Overflow用户

发布于 2014-09-22 16:56:52

将列和表名更改为`,最好使用查询,因为查询是已弃用

你是食物,卡路里变量在每一个循环迭代中都被覆盖

代码语言:javascript
复制
<?php
require 'connect.inc.php';

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

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

    while ($query_row = mysqli_fetch_assoc($query_run)) {
        $food[] = $query_row['food']; // Food and calories variable transmored into an array
        $calories[] = $query_row['calories'];
    }

} else {
    echo mysqli_error();
}

?>

connect.inc.php

代码语言:javascript
复制
<?php
$conn_error = "Could not connect."; 

$mysql_host = 'localhost';
$mysql_user =  'root';
$mysql_pass = '';

$mysql_db = 'a_database';

if (!@mysqli_connect($mysql_host, $mysql_user, $mysql_pass) || !@mysqli_select_db($mysql_db)) {
    die($conn_error);
} 
?>
票数 1
EN

Stack Overflow用户

发布于 2014-09-22 17:11:23

好吧,为了开始您在查询中选择的表之间缺少一个昏迷,那么,您将使用一个不推荐的类(很快就会消失)。如果您正在学习,您应该检查查询的数据处理,您应该尝试使用米斯里。

然后,您应该习惯于将坟墓用于表或字段名,正常撇号用于String/VARCHAR或插入/更新/where等上的文本。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25979218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档