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=>this,1=>that因此,foreach($pieces[1] as $test)
的意思是
上面的方法是有效的,但是,当我将$pieces[1]
更改为$pieces[0]
时,我仍然得到与$pieces[1]
相对应的结果。当我把它改为不存在的$pieces[4]
时,我再次得到了与$pieces[1]
相对应的结果。
我哪里做错了?如何使此阵列工作?
根据tbl1.id=1 piece[0]=>这个,piece[1]=>那个,我想让它为我的桌子工作。请帮忙。
$pieces[1],您在foreach循环中使用的变量是字符串,而不是数组。你应该循环通过$pieces数组,所以:
foreach($pieces as $test){
非
foreach($pieces[1] as $test){
$pieces[1]不是数组,而是数组的元素($pieces),因此更好地使用无循环语句,
$query="SELECT * FROM tbl1, tbl2 WHERE
$pieces[1] = tbl2.cost AND
tbl1.id='$id'";
感谢
运行时
$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);