簡體   English   中英

在WHERE子句中使用值的字符串-MySQL

[英]using a string of values in WHERE clause - mysql

我有一個像這樣的值字符串:

$cat = "1,5,6,8,9";

現在我想在WHERE子句中使用該變量。 我該怎么做 ?

"select category from test where category...?"

我正在使用下面的代碼,但是我從number_of_result變量得到null:

$array_of_cat = explode(",",$cat);

if($number_of_result == 0){
    $mresult = mysql_query("select * from books where
     GoodName like '%$title%' and GroupCode in ($array_of_cat) ");
    $number_of_result = mysql_num_rows($mresult);
}

您無需分解變量-這樣做會生成一個數組,當插入SQL字符串時,該數組將導致錯誤的值(字符串“ Array”)。

盡管這是不安全的( SQL注入容易 ),您仍然可以這樣做:

if($number_of_result == 0){
    $mresult = mysql_query("select * from books where
     GoodName like '%$title%' and GroupCode in ($cat)");
    $number_of_result = mysql_num_rows($mresult);
}

我強烈建議您使用mysql_real_escape_string函數准備變量。

將您的SQL語句更改為此。 使用implode()IN子句中傳遞數組元素

$mresult = mysql_query("
  SELECT * FROM books 
  WHERE GoodName LIKE '%$title%' AND GroupCode IN (" . implode(",", $array_of_cat) . ")");
$cat = array(1,5,6,8,9);

$array_of_cat = implode(",",$cat);

if($number_of_result > 0){
  $mresult = mysql_query("select * from books where
  GoodName like '%$title%' and GroupCode in ($array_of_cat) ");

$number_of_result = mysql_num_rows($mresult);
}

另外,我強烈建議您閱讀PDO / MySQLi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM