将数组值连接到SQL查询错误

时间:2016-06-07 07:42:49

标签: php sql

我从数组中获取一些值,并在SQL查询中对这些值进行匹配。

此代码如下:

  foreach($files as $ex){

      $search = substr($ex,3,4);

  $sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> ' .$search. ' LIMIT 6';

  $result = mysql_query($sql) or die(mysql_error());

  while($row = mysql_fetch_array($result)){

    $pdb[] = $row['pdb_code'];
  } 
}

我遇到的问题是

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在第1行'LIMIT 6'附近

请帮忙..谢谢

4 个答案:

答案 0 :(得分:0)

添加引号:

$sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> "' .$search. '" LIMIT 6';

答案 1 :(得分:0)

当您在单引号中编写查询并再次在单引号中打印变量时,因此当您打印此查询时,您会看到查询结束如下:

    'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> '

所以要让它一直读取你必须用双引号括起你的变量..我希望这个描述会有所帮助。你可以像任何一样写它..

    'SELECT xyz FROM abc WHERE xyz = "'.$abc.'" ';

OR

    "SELECT xyz FROM abc WHERE xyz = '.$abc.'"

答案 2 :(得分:0)

将其置于双引号中重写您的查询:

取而代之的是:

_curClusters

试试这个:

$sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> ' .$search. ' LIMIT 6';

答案 3 :(得分:0)

请不要使用mysql_query()函数 - 在php&lt;中不推荐使用它。 php7,因为php7它被删除。目前最好的做法是使用PDO。如果您必须以旧方式执行此操作,请使用mysqli_query。

在我看来,你能做的最好的事情如下:

$db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'username', 'password');
$statement = $db->prepare('SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> :search LIMIT 6');
$statement->execute([':search' => $search]);
$resultAsAnArray = $statement->fetchAll(PDO::FETCH_ASSOC);