0

我不想一次在 mysql DB 中搜索一个变量,而是想搜索多个变量,并将其放入初始查询字符串中

所以而不是

$query="SELECT * FROM table1 WHERE state = 'CA' OR state = 'CO' OR state = 'TX'";

我想要

$states = ("CA,CO,TX");
$query="SELECT * FROM table1 WHERE state = $states";

我努力了

<?
include("connect.php"); // file to connect to db
$states = array(CA,TX);
$states_str = implode(",", $states);


$query="SELECT * FROM table1 WHERE state IN ($states_str)";

$result=mysql_query ($query);
while($row = mysql_fetch_array($result)) {
echo $row['state'];
}

?>

但我收到此错误消息

 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in  ... on line 11

这是第 11 行

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

但是,如果我使用此代码,我会得到一个结果,只是为了表明当我切换回旧的常规查询时它可以工作

<?
include("connect.php"); // file to connect to db
$states = array(CA,TX);
$states_str = implode(",", $states);


$query="SELECT * FROM table1 WHERE state = 'CA'";

$result=mysql_query ($query);
while($row = mysql_fetch_array($result)) {
echo $row['state'];
}

?>

但后来我绕过了 implode() 东西,我在其他地方找到了它,但它对我不起作用

4

3 回答 3

2

显然,查询失败是因为字符串值没有被引用。

尝试:

$states = array('CA','TX');
$states_str = implode("','", $states);
$query="SELECT * FROM table1 WHERE state IN ('$states_str')";
于 2013-11-07T17:19:15.253 回答
0
<?
include("connect.php"); // file to connect to db
$states = array('CA','TX');
$states_str = implode("','", $states);
$states_str = rtrim($states_str,",'");


$query="SELECT * FROM table1 WHERE state IN ('$states_str')";

$result=mysql_query ($query);
if($result){
while($row = mysql_fetch_array($result)) {
echo $row['state'];
}
}
?>

那是因为您的查询失败所以首先检查它

于 2013-11-07T17:20:09.110 回答
0
 <?php
 include('../testi.inc');

 $states = array('CA','TX');
 $states_str = implode("','", $states);

 $query = "SELECT * FROM states WHERE state IN ('$states_str')";

 $result=mysqli_query ($db,$query) or die(mysql_error());
 while($row = mysqli_fetch_assoc($result)) {
 echo $row['state'];
 }

 ?>

或类似的东西

于 2013-11-07T17:23:00.547 回答