Php 选择数据的位置

Php 选择数据的位置,php,mysql,post,Php,Mysql,Post,我试图从用户在上一页上选择的数据库中选择数据 我正在使用$\u POST获取数据并进行以下查询 $result=mysql_query("SELECT * FROM $table WHERE $field LIKE'%$fieldvalue%' AND $filter1 LIKE'%$filter1value%' AND $filter2 LIKE'%$filter2value%' AND $filter3 LIKE'%$filter3value%' AND $f

我试图从用户在上一页上选择的数据库中选择数据

我正在使用$\u POST获取数据并进行以下查询

$result=mysql_query("SELECT * FROM $table WHERE
  $field   LIKE'%$fieldvalue%'   AND
  $filter1 LIKE'%$filter1value%' AND  
  $filter2 LIKE'%$filter2value%' AND
  $filter3 LIKE'%$filter3value%' AND
  $filter4 LIKE'%$filter4value%' ")or die('ERROR 238 - ' . mysql_error());
这是错误的再现

错误238-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第2行“LIKE”%%附近要使用的正确语法

有谁能帮我看看我做错了什么

更新

变量可以是空的-如何首先检查?
首先,我们需要更改您的代码,以便对代码进行一些调试:

我添加了花括号,因为我发现它们更容易阅读。(这里有更多关于这些的信息:)。我还向SQL添加了反勾号,用于标记字段名

$sql="SELECT * FROM $table WHERE
`{$field}`   LIKE'%{$fieldvalue}%'   AND
`{$filter1}` LIKE'%{$filter1value}%' AND  
`{$filter2}` LIKE'%{$filter2value}%' AND
`{$filter3}` LIKE'%{$filter3value}%' AND
`{$filter4}` LIKE'%{$filter4value}% ;";

echo $sql; // this allows you to see the SQL you are making

$result=mysql_query($sql)or die('ERROR 238 - ' . mysql_error());
现在很明显,当您希望其他人使用您的代码时,您需要注释掉
echo
行。但是,如果您遇到
SQL
错误,那么查看SQL将有所帮助。由于我看不到您的SQL,我将进行一系列有根据的猜测,并为每个猜测提供答案

猜测1:没有设置所有字符串。 我的直觉反应是,
$fieldvalue
未设置或为空字符串。如果您没有看到一个或多个占位符的任何内容,并且您看到一对反勾号或
'%%'
,那么问题在于代码中的其他地方字符串没有获得值

因此,对于此解决方案,请检查您是否正在根据用户输入构建字符串

猜测2:表单未提供所有值 当您处理用户提供的值时,我希望您有这样的好东西:

if(isset($_POST['fieldvalue']){
    $fieldvalue = mysql_real_escape_string(trim($_POST['fieldvalue']));
    if($fieldvalue == ''){
        $fieldvalue='SomeDefaulValue';
    }
}
每一个价值观

就个人而言,这似乎是太多的工作,我会使用数组,但那是我

假设您没有证明默认值(这是一个很常见的错误),并且出于某种原因,表单没有提供您所需的所有值,这也会导致与未设置字符串相同的输出

猜测3:一个容易被忽略的字符串名称差异 始终值得检查的是,您没有将值设置为
$feildvalue
,然后调用
$fieldvalue
(注意拼写上的细微差别)


它发生在我们所有人身上(另一个很好的参数是数组和一些循环(更少的输入和出错).

感谢您注意到这一点-尽管仍然会出现相同的错误!不幸的是,修复单引号并不能回答问题。在修复'quoteSure.更新的问题之后,您可以发布查询吗。如何检查变量是否为空?@sanirranta-完美!谢谢!!
if(isset($_POST['fieldvalue']){
    $fieldvalue = mysql_real_escape_string(trim($_POST['fieldvalue']));
    if($fieldvalue == ''){
        $fieldvalue='SomeDefaulValue';
    }
}