0

表1

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

表2

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=>this, 1=>that 所以, foreach($pieces[1] as $test), 它的意思是“那个”

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

我在哪里做错了?我怎样才能使这个阵列工作?

根据 tbl1.id=1 piece[0]=>this,piece[1]=>that 我想让它适用于我的桌子。请帮忙。

4

3 回答 3

1

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

foreach($pieces as $test){ 

... 不是

foreach($pieces[1] as $test){ 
于 2012-08-20T03:38:33.390 回答
1

$pieces[1] 不是数组而是数组的一个元素($pieces),所以最好不要使用循环语句,

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

谢谢

于 2012-08-20T03:41:12.943 回答
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);
于 2012-08-20T03:40:01.017 回答