我一直在尝试从db表中获取数据,其中发布的id值为:
<a href="page.php?id=category">
现在当我点击此链接时,它会将我重定向到&#34; page.php&#34;使用sql查询:
<?php
$sql2 = "SELECT * FROM table WHERE category = ".$_GET["id"];
$result2 = $conn->query($sql2);
if ($result2['num_rows'] > 0) {
while($row2 = $result2->fetch_assoc()) { ?>
<?php echo ($row2['category']); ?>
即使我的表中包含类别为类别的内容,仍然没有打印任何内容..没有错误。
显示空白页面,因为我可以看到id被传递但我的查询有问题。
感谢任何帮助。
答案 0 :(得分:1)
<强>更改强>
1) if ($result2['num_rows'] > 0) {
至if ($result2->num_rows > 0) {
2)使用预准备语句来避免SQL注入
更新代码
<?php
$result2 = $conn->prepare("SELECT * FROM table WHERE category = :id");
$result2->execute(array(':id' => $_GET['id']));
if ($result2->num_rows > 0) {
while($row2 = $result2->fetch_assoc()) {?>
<?php echo ($row2['category']); ?>
有用的链接
答案 1 :(得分:0)
SQL字符串必须用'
个字符分隔。
即。您的查询应该是:
SELECT * FROM table WHERE category = 'category'
而不是
SELECT * FROM table WHERE category = category
如果您使用支持占位符语法的数据库API,则此问题(以及您的overflow specification)将消失:
SELECT * FROM table WHERE category = ?