我发疯自己搞清楚以下代码的问题。数据库中的所有名称都与我在这里的名称完全相同但是我似乎无法使用$ quoteid从引号中获取信息,但是当我输入id静态时,例如quoteid = 12我可以过滤数据。 显然这不是理想的。
<?php
$quoteid = $_GET["quoteid"];
if ($_GET['quoteid']) {
$quoteid = $_GET["quoteid"];
}
$quote = $db->getRow("SELECT * FROM quotes WHERE quoteid = $quoteid");
?>
HTML
<h1><?php echo $quote->description;?></h1>
非常感谢任何帮助。
谢谢,
梅丽莎
答案 0 :(得分:1)
请注意,在编写SQL查询时,需要将PHP 变量放在单引号中。在示例中这样做:
$quote = $db->getRow("SELECT * FROM quotes WHERE quoteid = '$quoteid'");
答案 1 :(得分:1)
为什么你一次又一次地$_GET["quoteid"]
并且在编写SQL查询时也使用single for variable
<?php
$quoteid = $_GET["quoteid"];
if (!empty($quoteid)) {
$quote = $db->getRow("SELECT * FROM quotes WHERE quoteid = '$quoteid'");
}
else {
echo 'quote id is empty';
}
?>
也使用mysql_real_string_escape()
来阻止sql注入
答案 2 :(得分:0)
您应该执行以下操作...基本调试。
print_r
或var_dump
$_GET
查看是否以及如何&#34; quoteid&#34;已成立
在$_GET
superglobal 中
echo
您的SQL(而非mysql_query
只是echo
)并运行它
phpmyadmin如果看起来不错 - 你可能有错过的东西
某处这样你应该能够更快地找出问题
答案 3 :(得分:0)
使用$ quoteid变量查询语法时出错。你应该使用这个 -
global $db;
$quote = $db->get_row("SELECT * FROM quotes WHERE quoteid ='".$quoteid."'");