繁体   English   中英

使用PHP,MYSQL进行动态查询

[英]Dynamic query using PHP, MYSQL

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

因此,如果单击链接“ 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行“

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

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

表名和WHERE语句之间必须有一个空格。

我认为这样写起来更清楚,而且出错的可能性也更少:

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

尽管在生产中您当然会使用准备好的语句

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

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

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

2)使用准备好的语句: 请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM