-3
 <?php
   $query = "SELECT * ";
   $query .= "FROM subjects ";
   $query .= "WHERE id='" . $subject_id ."' ";
   $query .= "LIMIT 1";
 ?>

问题原因在这一行:错误:“数据库查询失败:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'LIMIT 1' 附近使用正确的语法”

那么为什么......尽管语法是正确的。给我那个错误?!

4

3 回答 3

0

错误消息来自执行您的问题中未显示的代码行。

一个明显的可能性是这段代码产生的字符串值没有被传递给 MySQL。另一种可能性是$subject_id包含被解释为 SQL 文本的字符串值,并且$query不包含您认为它包含的内容。还有很多其他的可能性。

对于这样的调试问题,我们确实需要识别实际引发错误的代码行。(在您的情况下,这将是对 mysql_、mysqli 或 PDO 执行或准备函数或方法的调用。)

您可以做的是在引发错误的行之前的一行上添加一个echovar_dump正在传递给 MySQL 的 ACTUAL SQL 文本。

例如,如果在此代码之后且在 parse 或 execute 调用之前的一行代码修改了$query

$query .= " LIMIT 1";

这将在查询中添加第二个 LIMIT 子句,该子句无效,并且会引发您遇到的相同错误。

重申一下:您问题中发布的代码行不会引发错误。您发布的代码行只是将字符串值分配给变量。(这可能是传递给 MySQL 的字符串值,但我们在您的代码中的任何地方都看不到。)

于 2013-08-13T06:21:49.510 回答
-1

您使用的'subject_id'可能是 int 格式有一些问题,所以使用subject_idLimit 1替换Limit 0,1

<?php
   $query = "SELECT * ";
   $query .= "FROM subjects ";
   $query .= "WHERE id=" . $subject_id;
   $query .= "LIMIT 0,1";
 ?>
于 2013-08-13T06:48:34.633 回答
-4

您不需要连接可以使用的变量

 <?php
 $query = "SELECT * ";
 $query .= "FROM subjects ";
 $query .= "WHERE id='$subject_id' ";
 $query .= "LIMIT 1";
  ?>

你的变量后面也有两个分号,如果你的变量是一个整数,它也不需要用单引号引起来。

于 2013-08-13T05:58:50.983 回答