php中使用内爆变量的select查询有问题吗?

php中使用内爆变量的select查询有问题吗?,php,Php,我不知道它是不是复制品 以下是我正在尝试的: <?php session_start(); include('db.php'); $valid_data=$_POST['data']; if(isset($_POST['data'])) { $list = isset($_SESSION['strtpnt1']) ? $_SESSION['strtpnt1'] : array(); $_SESSION['strtpnt1']

我不知道它是不是复制品

以下是我正在尝试的:

 <?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']);
    }
  ?>
我没发现有什么不对

当我回显内爆变量时,我发现值如下:

     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'
但是,当字符串值被传递时,即“trivandrum”、“kochi”等,查询就会工作

我不知道我的查询出了什么问题……这是查询部分

  $sql21 = "select start from tbl_place where start NOT IN('".$a."')";

参数
$a
值中有错误,在()中的
中的所有值都应该被引用并用逗号分隔

  $a=$_SESSION['strtpnt1'];
  $new_a= "'" . implode("','", $a) . "'";
  $sql21 = "select start from tbl_place where 
 start NOT IN($new_a)";
更改代码,如下所示:

$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');

现在它应该可以工作了。

现在你可以试试这个,但事先准备好的声明是最好的。您可以使用PDO或MYSQLi。它不适用于您,因为不在列表中需要单独引用并用逗号分隔

  $a=$_SESSION['strtpnt1'];
  $new_a= "'" . implode("','", $a) . "'";
  $sql21 = "select start from tbl_place where 
 start NOT IN($new_a)";
相似的想法 :

$sql21=“选择从tbl_位置开始,开始位置不在(“$a.”)中”

你会喜欢这样:

$sql21=“选择从tbl_位置开始,开始不在('trivandrum、kochi、nagercoil、thrissur')”

它将被视为一个完整的字符串

您必须在传递变量时执行以下操作
$a=内爆(“,”,$_SESSION['strtpnt1'])

使用prepared statement你的意思是PDO…我不知道mch关于这个…我以前也有同样的问题,从变量中传入值,prepared statement解决了我的问题…我对此一无所知…我是否完全想更改我的mysql查询…还有其他建议…我可以问你一个问题吗?很高兴它对你有用。祝你好运。是的,兄弟,你可以问这个问题吗?这就是为什么我们在SOI如果我想使用PDO,我想在我的所有页面中更改它…抱歉这样问你…我是一个初学者?我想你应该先阅读它k好吧,我现在明白了…你是一个很好的指南…我再次感谢你及时地得到你。。。