【问题标题】:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version~~您的 SQL 语法有错误;查看与你的 MySQL 服务器版本对应的手册~~
【发布时间】:2014-04-28 05:20:49
【问题描述】:

我的搜索引擎有问题。我可以搜索,但是当单击链接时,会出现“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的 'Pacina' 附近使用的正确语法”......我不知道如何解决。您的回答可能对我有很大帮助.. :)

这是我的代码:

<?php
    mysql_connect("localhost","root","");
    mysql_select_db("infokiosk");

    $name=$_GET['name'];
    $sql = mysql_query("select * from  basicinfo WHERE name=$name") or die(mysql_error());

While($row = mysql_fetch_array($sql)) {

$id= $_GET['id'];
$name=$_GET['name'];
$description=$_GET['description'];

{
?>
  <tr>
<td><?php echo $name; ?></td><?php echo $description; ?>
</tr>




    </div>
<?php }} ?>

<br>
<?php
 $sql = mysql_query("select * from  staffreg WHERE name LIKE '%$search%' or description LIKE '%$search%' or keyword LIKE '%$search%'") or die(mysql_error());

While($row = mysql_fetch_array($sql)) {

$id= $row['id'];
$name=$row['name'];
$description=$row['description'];
{
?>






<tr>
<td><?php echo $name; ?></td>
<?php echo $description; ?>
<?php echo $status; ?>
</tr>





    </div>
<?php }}?>

<?php
 $sql = mysql_query("select * from  search WHERE name LIKE '%$search%' or description LIKE '%$search%' ") or die(mysql_error());

While($row = mysql_fetch_array($sql)) {

$id= $row['id'];
$name=$row['name'];
$description=$row['description'];
$content=$row['content'];

{
?>






<tr>
<td><?php echo $name; ?><br> <?php echo $content ?></td>

</tr>




    </div>
<?php }}?>

我不知道问题出在哪里/哪里.. :( 在此先感谢.. :)

【问题讨论】:

  • 您可能需要在此行中为$name 加上引号:"select * from basicinfo WHERE name=$name",但实际上您需要更多,因为这要求进行 SQL 注入攻击。

标签: php sql


【解决方案1】:

string 在查询中应该用单引号括起来,

"SELECT * FROM  basicinfo WHERE `name`='".$name."'";

Waring: Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

【讨论】:

    【解决方案2】:

    对于您的 SELECT 语句,您需要使 $sql 像

     $sql = mysql_query("select * from  search WHERE name LIKE '%".$search."%' or description LIKE '%".$search%"."'") or die(mysql_error());
    

    还有另一个选择语句

    $sql = mysql_query("select * from  basicinfo WHERE `name`='$name'") or die(mysql_error());
    

    此 (mysql_*) 扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用MySQLiPDO_MySQL 扩展的Prepared Statements 来抵御SQL 注入攻击!

    【讨论】:

      【解决方案3】:

      服务器版本:5.5.32 - MySQL 社区服务器 (GPL)

      **$sql = mysql_query("select * from  staffreg WHERE name LIKE '%".$search."%' or description LIKE '%".$search."%' or keyword LIKE '%".$search."%'") or die(mysql_error());**
      
      **$sql = mysql_query("select * from  search WHERE name LIKE '%".$search."%' or description LIKE '%".$search."%' ") or die(mysql_error());**
      

      使用最新版本的 Mysql 安装您的系统和打印浏览器后您应该编写的所有查询。并运行 sql (PHPMYADMIN)。获取结果..

      【讨论】:

        猜你喜欢
        • 2013-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        • 2014-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多