使用PHP,MYSQL进行动态查询

时间:2015-11-30 14:57:55

标签: php mysql

我正在尝试创建一个动态链接,根据项ID更改数据库查询。

因此,如果您点击链接WHERE“ID = X”,则会转到下一页,其中显示有关该项目的更多信息。以下是我索引页面上链接的代码:

<a href="details.php?ID= <?php print $row['ID']?> "> Click here </a>

哪个工作正常。由于某种原因,问题似乎出现在我的WHERE语句中

<?php $myQuery = "SELECT * FROM test"; 
      $myQuery .= "WHERE ID=" . $_GET['ID']; 

$result = $con->query($myQuery);
`if (!$result) die('Query error: ' . mysqli_error($con)); ?>

在这里,我显示了该特定数据库项的元素......

<?php

while($row = mysqli_fetch_array($result))
{ 
?> 
        <?php print $row['image'] ?>     
        <?php print $row ['ID']?>
        <?php print $row['description'] ?>

<?php
}
?>  

例如,当我单击ID为1的项时,它会抛出一条错误消息,显示“查询错误:您的SQL语法中有错误;请查看与您的MariaDB服务器版本对应的手册,以获得正确的语法在第1行“= 1”附近使用“

我对这一切都很陌生,这是我第一次在这个网站上发帖,所以如果有人可以帮助我,真的很棒..谢谢

3 个答案:

答案 0 :(得分:1)

您的查询现在为SELECT * FROM testWHERE ID=..

您的tablename和WHERE语句之间需要有一个空格。

答案 1 :(得分:0)

如果您编写如下代码,我认为它更清晰,更不容易出错:

<?php $myQuery = "
      SELECT *  
        FROM test
       WHERE ID= $_GET['ID'];
"; 
...

虽然在制作中你当然会使用准备好的陈述

答案 2 :(得分:0)

在SQL中添加该空间将按原样修复您的查询,但正如其他人所说,您的代码不安全,您应该使用预准备语句。当您切换到预准备语句时,由于您已添加到链接的所有额外空间,您的查询将再次中断。要正确修复 ...

1)删除链接中所有不必要的空格。

<a href="details.php?ID=<?php print $row['ID']?>"> Click here </a>

2)使用准备好的陈述:see here