我不知道它是否重复?
以下是我正在尝试的内容:
<?php
session_start();
include('db.php');
$valid_data=$_POST['data'];
if(isset($_POST['data']))
{
$list = isset($_SESSION['strtpnt1']) ? $_SESSION['strtpnt1'] : array();
$_SESSION['strtpnt1'][] =$valid_data;
$a=implode(',',$_SESSION['strtpnt1']);
}
?>
当我使用print_r进行$ _SESSION [&#39; strtpnt1&#39;]我可以这样看:
array (size=5)
0 => string 'trivandrum' (length=10)
1 => string 'kochi' (length=5)
2 => string 'nagercoil' (length=9)
3 => string 'thrissur' (length=8)
我发现
没有错当我回应内爆变量时,我发现这样的值:
trivandrum,kochi,nagercoil,thrissur
当我在wampserver phpmyadmin这样的sql中测试内爆数据时,我会收到一条错误消息:
select start from tbl_place where start NOT IN(trivandrum,kochi,nagercoil,thrissur)
错误信息是:
Unknown column 'trivandrum' in 'where clause'
但是当字符串值传递时,查询就会起作用,即&#39; trivandrum&#39;&#39; kochi&#39;等
我不知道我的查询有什么问题......这是查询部分
$sql21 = "select start from tbl_place where start NOT IN('".$a."')";
答案 0 :(得分:0)
您的参数$a
值存在错误,IN()
内的所有值都应引用并以逗号分隔。
更改您的代码如下:
$a=implode("','",$_SESSION['strtpnt1']); // ',' => "','"
$sql21 = "select start from tbl_place where start NOT IN('".$a."');";// no change
// NOW the SQL query will became: select start from tbl_place where start NOT IN('trivandrum','kochi','nagercoil','thrissur');
现在应该可以了。
答案 1 :(得分:0)
现在你可以尝试这个,但准备好的声明是最好的。您可以使用PDO或MYSQLi。它不适合你,因为NOT IN需要单独引用列表并用逗号分隔。
$a=$_SESSION['strtpnt1'];
$new_a= "'" . implode("','", $a) . "'";
$sql21 = "select start from tbl_place where
start NOT IN($new_a)";
答案 2 :(得分:0)
$ sql21 =“从tbl_place开始选择从哪里开始NOT IN('”。$ a。“')”;
会像这样查询:
$ sql21 =“从tbl_place开始选择从哪里开始NOT IN('trivandrum,kochi,nagercoil,thrissur')”;
将整个字符串视为
你必须做传递变量 $ A =破灭( “ ''”,$ _ SESSION [ 'strtpnt1']);