PHP MYSQL数组foreach和insert

时间:2012-08-20 03:21:49

标签: php mysql arrays foreach

TBL1

id | detail
1  | this, that
2  | these, those

TBL2

id | visit  | cost
1  | this   | 20
2  | that   | 30
3  | these  | 40
4  | those  | 50

PHP:

<?php 

$id=$_GET['id'];    
$detail=$_GET['detail'];
$pieces = explode(",", $rows['detail']);

    // $pieces[0]; piece1
    // $pieces[1]; piece2        
    // $pieces[2]; piece2        
    // $pieces[3]; piece3    
    // $pieces[4]; piece4

    foreach($pieces[1] as $test){            

$query="SELECT * FROM tbl1, tbl2 WHERE
  $test = tbl2.cost AND
  tbl1.id='$id'";
    }   

$result=mysql_query($query) or die("error: " . mysql_error());

while($rows=mysql_fetch_array($result)){    
?>
<table>
    <tr>
    <td><input value="<? echo $rows['code'];?>" readonly="readonly"/></td>
    <td><input value="<? echo $rows['cost']; ?>" readonly="readonly"/></td>
    </tr>
  </table>

<?php
}
?>

对于id = 1,数组0 =&gt;这个,1 =&gt;那个 所以,foreach($pieces[1] as $test),意思是“那个”

以上方法有效,但是,当我将$pieces[1]更改为$pieces[0]时,我仍然会得到与$pieces[1]对应的结果。并且,当我将其更改为不存在的$pieces[4]时,我再次得到与$pieces[1]对应的结果。

我在哪里做错了?如何使这个数组工作?

根据tbl1.id = 1 piece [0] =&gt; this,piece [1] =&gt;那个,我想让它适用于我的表。请帮忙。

3 个答案:

答案 0 :(得分:1)

$ pieces [1],你在foreach循环中使用的变量是一个字符串,而不是一个数组。你应该循环遍历$ pieces数组,所以:

foreach($pieces as $test){ 

......不是

foreach($pieces[1] as $test){ 

答案 1 :(得分:1)

$ pieces [1]不是数组,而是数组的元素($ pieces), 所以更好地使用没有循环语句,

$query="SELECT * FROM tbl1, tbl2 WHERE
  $pieces[1] = tbl2.cost AND
  tbl1.id='$id'";

由于

答案 2 :(得分:0)

运行时

$result=mysql_query($query) or die("error: " . mysql_error());

它将返回from查询的结果。但你的疑问是什么?它是您设置$ query的最后一个字符串,这是for循环的最后一次迭代。这似乎是低效的,而不是你想要的行为。

假设您想要所有结果(并且不关心查询优化),您可以这样做:

foreach($pieces as $test){            
    $query="SELECT * FROM tbl1, tbl2 WHERE
    $test = tbl2.cost AND tbl1.id='$id'";

    $result[]=mysql_query($query) or die("error: " . mysql_error());
}

foreach ($results as $result){
    $rows=array_push(mysql_fetch_array($result));
}

现在,如果您只需要特定部分的详细信息,则甚至不需要for循环。

// replace 3 with the desired element
$query="SELECT * FROM tbl1, tbl2 WHERE
$pieces[3] = tbl2.cost AND tbl1.id='$id'";

$result=mysql_query($query) or die("error: " . mysql_error());

mysql_fetch_array($result);