Php 不同和<&燃气轮机;从SQL查询问题
我从数组中获取一些值,并在SQL查询中与这些值进行匹配 其代码如下:Php 不同和<&燃气轮机;从SQL查询问题,php,mysql,Php,Mysql,我从数组中获取一些值,并在SQL查询中与这些值进行匹配 其代码如下: foreach($files as $ex){ $search = substr($ex,3,4); echo $search . '<br>'; echo '<br>'; $sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> "' . $search . '" LIMIT
foreach($files as $ex){
$search = substr($ex,3,4);
echo $search . '<br>';
echo '<br>';
$sql = 'SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` <> "' . $search . '" LIMIT 4';
}
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo 'SQL' . $row['pdb_code'] .'<br>';
$pdb[] = $row['pdb_code'];
}
查询的SQL输出仍然是:
101m
102l
102m
103l
您必须在以下情况下使用not:
SELECT * FROM table_name WHERE column_name NOT IN(value1, value2...)
试试这个:
$searchIds = implode(',',$search);
$sql = "SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` NOT IN ('$searchIds') LIMIT 4";
您的代码似乎没有那么合乎逻辑,因为您生成了许多SQL语句,然后只执行最后一条 但是,我假设您要做的是获取一个文件列表,从每个文件名中提取一个字符串,然后从表中列出所有不在字符串中的pdb_代码值 如果是这样的话,像这样的事情就行了。它接受每个文件名,提取子字符串并转义,将结果放入数组中。然后它构建一个查询,内爆数组以在NOT in子句中使用:-
<?php
$search_array = array();
foreach($files as $ex)
{
$search = substr($ex,3,4);
echo $search . '<br>';
echo '<br>';
$search_array[] = mysql_real_escape_string($search);
}
if (count($search_array) > 0)
{
$sql = "SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` NOT IN ('" . implode("','", $search_array) . "') LIMIT 4";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo 'SQL' . $row['pdb_code'] .'<br>';
$pdb[] = $row['pdb_code'];
}
}
在不知道输入的情况下很难判断发生了什么(比如$files),但似乎您正在为$files中的每个元素构建一个SQL查询,但是您只执行最后一个。考虑$search的输出:101m 102l 102MH他还需要将所有搜索字符串连接到$search
。它的意思是警告:join():传入的参数无效
<?php
$search_array = array();
foreach($files as $ex)
{
$search = substr($ex,3,4);
echo $search . '<br>';
echo '<br>';
$search_array[] = mysql_real_escape_string($search);
}
if (count($search_array) > 0)
{
$sql = "SELECT DISTINCT `pdb_code` FROM pdb WHERE `pdb_code` NOT IN ('" . implode("','", $search_array) . "') LIMIT 4";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo 'SQL' . $row['pdb_code'] .'<br>';
$pdb[] = $row['pdb_code'];
}
}