我有一个名为 details.php 的页面。这是它的代码:
<?
$id = $_GET['id'];
?>
<?
$q = mysql_query("SELECT * FROM `db` WHERE id = $id ");
while($db = mysql_fetch_array($q)) {
?>
<p><?=$db['title']?> <br /> <?=$db['desc']?></p>
<? } ?>
因此,当我在浏览器中打开/details.php?id=1 时,它会起作用。段落标签显示了 id 1 的信息。所以...
如果我将 id 替换为 title,它将如下所示:
<?
$title = $_GET['title'];
?>
<?
$q = mysql_query("SELECT * FROM `db` WHERE title = $title ");
while($db = mysql_fetch_array($q)) {
?>
<p><?=$db['title']?> <br /> <?=$db['desc']?></p>
<? } ?>
如果我在浏览器中键入/details.php?title=M(M 是 mysql 中的现有列),它不起作用。我在段落中收到此错误:警告:mysql_fetch_array() 期望参数 1 为资源,第 51 行 C:\xampp\htdocs\mario\game.php 中给出的 bool 值
我哪里错了?
最佳答案
尝试
$q = mysql_query("SELECT * FROM `db` WHERE title = '" . $title . "'");
$title
是一个字符串,所以在查询中你必须用单引号将它包起来
自 PHP 5.5.0
起,此 (mysql_*
) 扩展已弃用,并将在未来删除。相反,应该使用 MySQLi
或 PDO_MySQL
扩展。切换到 PreparedStatements
可以更好地抵御 SQL 注入(inject)攻击!
关于php - 用于 SEO slug 的 PHP 中的 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385142/