【问题标题】:Using PHP loop for MYSQL SELECT [duplicate]为 MYSQL SELECT 使用 PHP 循环 [重复]
【发布时间】:2015-02-05 08:46:24
【问题描述】:

我需要从 MYSQL 表中选择数据。我需要选择的数据由表的另一列中的记录定义。在代码中,这些记录由 $Array 定义。我正在尝试使用此代码:

$Array=Array("red","green","blue","white");

$storeArray= Array();

for ($i = 0; $i < sizeof($Array); $i++)
     {
     $storeArray[$i] = mysql_query("SELECT name FROM $inputuser WHERE id="$Array[$i]"");

     while($row = mysql_fetch_array($storeArray, MYSQL_ASSOC)) 
          {
          $storeArray[$i] =  $row['name'];  
          }
     }

但它不起作用。它说:“解析错误:语法错误,意外的'$Array'(T_VARIABLE)”并指向行“$storeArray[$i] = mysql_query("SELECT name FROM ..."

我不知道问题出在哪里。还是有更好的解决方案?

【问题讨论】:

  • 字符串周围的引号。或者更好:使用Prepared Statements。此外,您的id 列是否真的包含颜色名称?
  • 一定要听听于尔根的建议。您应该使用可变数量的占位符实现单个预准备语句以生成单个结果集。

标签: php mysql loops select


【解决方案1】:

您应该使用id='$Array[$i]' 而不是id="$Array[$i]"

$Array=Array("red","green","blue","white");
$storeArray= Array();
for ($i = 0; $i < sizeof($Array); $i++)
{
     $storeArray[$i] = mysql_query("SELECT name FROM $inputuser WHERE id='$Array[$i]'");
                                                                       /*^^^^^^^^^^^^*/
     while($row = mysql_fetch_array($storeArray[$i], MYSQL_ASSOC))
     {
         $storeArray[$i] =  $row['name'];
     }
}

另外建议您使用mysqliPDO 而不是mysql

【讨论】:

  • 除了他需要使用mysql_fetch_array($storeArray[$i], MYSQL_ASSOC) 因为$storeArray 已经变成了二维数组...
  • 谢谢,但它仍然不起作用,它说“警告:mysql_fetch_array() 期望参数 1 是资源”并且它指向与“while(...”for ($i = 0; $i &lt; $actual_movies_count; $i++) { $storeArray_tips[$i] = mysql_query("SELECT rating_estimate FROM $inputuser WHERE title='$storeArray[$i]'"); while($row = mysql_fetch_array($storeArray_tips, MYSQL_ASSOC)) { $storeArray_tips[$i] = $row['rating_estimate']; } }
  • 现在的错误是什么? ..此外... $storeArray[$i] = $row['name']; ...?这将覆盖 $stroArray[$i].. 的值
  • 是的@Riad 我同意你的看法。无需将查询字符串分配给$storeArray[$i]。它应该是一个普通变量而不是数组
  • 它说“警告:mysql_fetch_array() 期望参数 1 是资源”,它指向与“while(...”一致,你是对的重写,这是我的废话
【解决方案2】:
$Array=Array("red","green","blue","white");
$storeArray= Array();
for ($i = 0; $i < sizeof($Array); $i++) {
    $storeArray[$i] = mysql_query("SELECT name FROM $inputuser WHERE id='".$Array[$i]."'");
    while($row = mysql_fetch_array($storeArray, MYSQL_ASSOC)) {
        $storeArray[$i] = $row['name'];
    }
}

【讨论】:

  • thx,但还是有一些问题,我尝试了一些建议,并根据更改提出了一个新问题
猜你喜欢
  • 2013-10-10
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
相关资源
最近更新 更多