gpt4 book ai didi

php - 使用 PHP 访问 MySQL DB 行数据

转载 作者:行者123 更新时间:2023-11-29 13:57:32 24 4
gpt4 key购买 nike

我有以下 PHP 来访问我正在构建的简单论坛的数据库:

$sql = "
SELECT
categories.cat_id,
categories.cat_name,
categories.cat_description
FROM
categories
WHERE
categories.cat_id = '" . mysql_real_escape_string($_GET['id']) ."'
";
$result = mysql_query($sql);

//If data is unable to be served...
if (!$result) {
echo 'Category could not be displayed! Please try again later' . mysql_error();
} else {
if(mysql_num_rows($result) == 0) {
//This is the error code being displayed
echo 'Category does not exist!';
}
}

这是数据库此部分的代码:

CREATE TABLE categories(
cat_id INT(8) NOT NULL AUTO_INCREMENT,
cat_name VARCHAR(255) NOT NULL,
cat_description VARCHAR(255) NOT NULL,
UNIQUE INDEX
cat_name_unique (cat_name),
PRIMARY KEY(cat_id)
)
TYPE=INNODB;

问题:由于某种原因,查询似乎没有正确从数据库中提取行数据,我不知道为什么它不起作用。也就是说,我对 MySQL 和 SQL 总体来说也是新手。有人对发生的事情有任何想法吗?简单地说,为什么 MySQL 查询无法访问 PHP 代码的数据?

任何帮助将不胜感激!

谢谢!

更新:

将 SQL 查询更改为:

categories.cat_id = " . mysql_real_escape_string($_GET['id']);

这解决了最初的问题,却又让另一个问题凸显出来。

我现在收到错误代码:

echo 'Category could not be displayed! Please try again later' . mysql_error();

使用 SQL 输出:

You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '' at line 8

我之前实际上遇到过这个问题,但在尝试修复它时,我提出了我发布的原始代码。我的 PHP 文件中有类似的代码可以工作,这让我相信这是我在数据库代码中犯的错误。

最佳答案

尚未查看您返回的错误,但同时根据您的表定义,cat_idint

但是您将它用单引号括起来传递,这意味着如果它是一个字符串,您在 PHP 中不会收到错误,您将从 mySQL 中获取它。

好的做法是改变这一点

categories.cat_id = '".mysql_real_escape_string($_GET['id']) ."'";

categories.cat_id = ".intval( mysql_real_escape_string($_GET['id']) );

如果 $_GET['id'] 返回字符串,或者 DBMS 设置为 strict_mode,则出现 DBMS 错误的可能性会降低。

理想情况下,您可以测试$_GET获取的值,并在传递它们之前优雅地处理不正确的类型,从而避免 PHP 或 mySql 生成错误。

关于php - 使用 PHP 访问 MySQL DB 行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15608101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com