获取数组元素并使用php在mysql查询中使用它

获取数组元素并使用php在mysql查询中使用它,php,mysql,arrays,foreach,Php,Mysql,Arrays,Foreach,我想做如下的Mysql查询: $sql = mysql_query("SELECT * FROM myTable WHERE id='11' AND number='23' AND value='45' AND result='101' "); foreach($myArray[] as $singleRow) { foreach($singleRow as $myElement) { $sql = mysql_query("SELECT * FROM myTable WHERE

我想做如下的Mysql查询:

$sql = mysql_query("SELECT * FROM myTable WHERE id='11' AND number='23' AND value='45' AND result='101' ");
foreach($myArray[] as $singleRow) {
  foreach($singleRow as $myElement) { 
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $myElement ."' AND number='". $myElement ."' AND value='". $myElement . "' AND result='". $myElement ."' ");
  }
}
for ($i=0; $i<count($myArray); $i++) {
  foreach($myArray[$i] as $myElement) {
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $myElement ."' AND number='". $myElement ."' AND value='". $myElement . "' AND result='". $myElement ."' ");
  }
}
我想使用“$myArray”数组元素更改mysql_查询的WHERE变量

$myArray[0] = array(11, 23, 45, 101);  => this is the current query
$myArray[1] = array(21, 31, 70, 58);
$myArray[2] = array(8, 77, 68, 94);
我试图得到这样的结果:

$sql = mysql_query("SELECT * FROM myTable WHERE id='11' AND number='23' AND value='45' AND result='101' ");
foreach($myArray[] as $singleRow) {
  foreach($singleRow as $myElement) { 
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $myElement ."' AND number='". $myElement ."' AND value='". $myElement . "' AND result='". $myElement ."' ");
  }
}
for ($i=0; $i<count($myArray); $i++) {
  foreach($myArray[$i] as $myElement) {
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $myElement ."' AND number='". $myElement ."' AND value='". $myElement . "' AND result='". $myElement ."' ");
  }
}
或者像这样:

$sql = mysql_query("SELECT * FROM myTable WHERE id='11' AND number='23' AND value='45' AND result='101' ");
foreach($myArray[] as $singleRow) {
  foreach($singleRow as $myElement) { 
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $myElement ."' AND number='". $myElement ."' AND value='". $myElement . "' AND result='". $myElement ."' ");
  }
}
for ($i=0; $i<count($myArray); $i++) {
  foreach($myArray[$i] as $myElement) {
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $myElement ."' AND number='". $myElement ."' AND value='". $myElement . "' AND result='". $myElement ."' ");
  }
}

for($i=0;$i不确定您为什么要这样做,特别是考虑到mysql_*函数正在被弃用,但为了学习,在本例中,您可以这样做:

foreach($myArray as $row) { 
   $sql = mysql_query( "SELECT * FROM myTable WHERE id='". $row[0] ."' AND number='". $row[1] ."' AND value='". $row[2] . "' AND result='". $row[3] ."' ");
}

不确定您为什么要尝试这样做,特别是考虑到mysql_*函数正在被弃用,但为了学习,在本例中,您可以这样做:

foreach($myArray as $row) { 
   $sql = mysql_query( "SELECT * FROM myTable WHERE id='". $row[0] ."' AND number='". $row[1] ."' AND value='". $row[2] . "' AND result='". $row[3] ."' ");
}

您添加了太多的循环,并且没有在正确的时间引用正确的变量:

foreach($myArray as $singleRow) {
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $singleRow[0] ."' AND number='". $singleRow[1] ."' AND value='". $singleRow[2] . "' AND result='". $singleRow[3] ."' ");
}

我真的建议切换到PDO或mysqli。不仅mysql_*函数不受欢迎,而且很容易sql注入,PDO和mysqli都允许您发送一个数组作为参数,并为您处理报价封装。

您添加了太多循环,并且没有在正确的时间引用正确的变量:

foreach($myArray as $singleRow) {
    $sql = mysql_query("SELECT * FROM myTable WHERE id='". $singleRow[0] ."' AND number='". $singleRow[1] ."' AND value='". $singleRow[2] . "' AND result='". $singleRow[3] ."' ");
}

我真的建议切换到PDO或mysqli。不仅mysql_*函数不受欢迎,而且很容易sql注入,PDO和mysqli都允许您发送数组作为参数,并为您处理报价封装。

使用PDO或ADOdb,因为mysql_query不受欢迎。有了它们,您可以通过passi执行查询将数组作为参数。查看:)另外,您的$myElement末尾还有一个额外的“可能会导致失败”。您是对的,这是一个输入错误。我已经删除了额外的”。谢谢,这和你昨天的问题基本上不一样吗:使用PDO或ADOdb,因为mysql_查询已被弃用。使用这些函数,您可以通过将数组作为参数传递来执行查询。仔细看:)另外,你的$myElement结尾有一个额外的“这会导致它失败。你是对的,这是一个拼写错误。我已经删除了额外的”。谢谢这和你昨天的问题基本上不一样吗?谢谢你的回答。实际上我想做的是:*)我有一个超过100000行的表。它有“id”列(自动增量)和“value”列(int 0或1)。*)我想寻找与二进制模式2^10(10的2次幂)匹配的状态有多少,即“0000000000”、“0000000001”、“0000000010”、“0000000011”。。。。。。"1111111111". *) 可以使用(对于三位数模式)搜索此模式
select count(*)match_count from the table t1 join the table t2 on t1.id+1=t2.id join the table t3 on t1.id+2=t3.id其中t1.value=1和t2.value=0和t3.value=1
对不起,我还没有得到15个声誉…:(谢谢你的回答。事实上我想做的是:)我有一张超过100000行的桌子。它有“id”列(自动增量)和“value”列(int 0或1)。*)我想寻找与二进制模式2^10(10的2次幂)匹配的状态有多少,即“0000000000”、“0000000001”、“0000000010”、“0000000011”。。。。。。"1111111111". *) 可以使用(对于三位数模式)搜索此模式
select count(*)match_count from the table t1 join the table t2 on t1.id+1=t2.id join the table t3 on t1.id+2=t3.id其中t1.value=1和t2.value=0和t3.value=1
对不起,我还没有得到15个声誉…:(