【问题标题】:while loop inside a foreach loop [closed]foreach循环内的while循环[关闭]
【发布时间】:2013-01-15 02:16:52
【问题描述】:

也许我在混合苹果和橙子——$clist 是一个带有 csv 的字符串。我无法让 $row2['$cat'] 回显任何内容。提前致谢

$cats = explode(",", $clist);
foreach($cats as $cat) {
  $cat = trim($cat);
  $q = "SELECT * FROM contacts WHERE id = '$cat' ";
  $result = mysql_query($q, $link);

  $num2=mysql_num_rows($result2);

  $x = 0;
  while($x < $num2) {
    $row2 = mysql_fetch_array($result2);
    echo $row2['$cat'];
    $x++;
  }
}

【问题讨论】:

  • 删除引号。 $row2[$cat] 否则,单引号会导致字面解释而不是变量插值。
  • 另外,第一次调用mysql_num_rows() 应该是资源$result,而不是$result2
  • @MichaelBerkowski:你说“而不是”,除了没有引号,没有任何插值,因为没有字符串。
  • @LightnessRacesinOrbit 澄清为 单引号导致字符串 '$cat' 的字面解释而不是插值其变量值
  • @MichaelBerkowski:啊,所以你的意思是与双引号相反,而不是完全删除所有引号

标签: php loops foreach while-loop


【解决方案1】:

来自 Michael Berkowski 的评论:删除引号。 $row2[$cat]

【讨论】:

  • 高度尊重将答案发布为答案并且不因此而获得代表荣誉
【解决方案2】:

与其对数组中的每个值进行查询,不如只进行一次查询?

$cats = array('ginger','tabby','somthing');
$sql = "SELECT * FROM contacts WHERE id IN(\"".implode('", "',$cats)."\")";

//SELECT * FROM contacts WHERE id IN("ginger", "tabby", "somthing")

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 2014-03-22
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多