我不能从 mysql 数据库中获取多行到数组中?

Posted

技术标签:

【中文标题】我不能从 mysql 数据库中获取多行到数组中?【英文标题】:i can't get multiple rows into array from mysql database? 【发布时间】:2013-03-06 14:43:32 【问题描述】:

我无法从 mysql 数据库中获取多行到数组中?我有代码,但是当我回显到文本框时它不工作或不显示所有行?

<?php 
if(is_array($_SESSION['pid']))

  $pid = join(',',$_SESSION['pid']); 
  $result=mysql_query("SELECT id AS wid FROM mywishlist where pid='$pid'") 
            or die("Id    Problem"."<br/><br/>".mysql_error());
  $results= array();
  $i=0; // add the new line
  while($row=mysql_fetch_array($result))
    $results[$i] = $row['wid'];
    $i++;
  
  $results;

$max=count($results);
for($j=0; $j<$max; $j++)

?>
<input type="text" name="wid[]" value="<?php echo $results[$j]; ?>" />
<?php  ?>

【问题讨论】:

Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial. sql注入的好洞祝你好运 为什么$results;在while lop之后 @NullPointer 感谢您的支持,但我还有另一个问题,您能解决吗? @FarhanDharsi 我怀疑你的意思是pid IN ($pid),但是是的,这里的注入是个问题。 【参考方案1】:

join(',',$_SESSION['pid']) 行让我觉得您想通过pid 选择多行。尝试使用IN操作符:

SELECT id AS wid FROM mywishlist
WHERE pid IN ($pid)

【讨论】:

【参考方案2】:

您的查询错误,请使用此查询

$result=mysql_query("SELECT id AS wid FROM mywishlist where pid IN($pid) ") 

【讨论】:

以上答案和你的有什么区别? yogesh 我使用了这个查询,但结果仍然相同,只取一行? @FarhanDharsi 在phpmyadmin 中运行此查询并检查它返回的行数。并在while循环后删除此行$results; 是的,我尝试了该查询并从此查询中获取所有行...在 phpmyadmin 中 @FarhanDharsi 在 while 循环后使用 print_r($results); 并查看它包含的内容。【参考方案3】:

试试

$results= array();

while($row=mysql_fetch_array($result))

    $results[] = $row['wid'];

和 For 循环一样。

$max = count($results);
for($j=0; $j<$max; $j++)

?>
    <input type="text" name="wid[]" value="<?php echo $results[$j]; ?>" />
<?php

?>

【讨论】:

以上是关于我不能从 mysql 数据库中获取多行到数组中?的主要内容,如果未能解决你的问题,请参考以下文章

百度Echarts地图上呈现的数据如何直接从Mysql数据库获取,且显示多行数据,而不用手动在html文件中输入?

MySQL存储过程从列表中插入多行

如何从具有多行的 SQL 查询中获取非字符串数组字段

如何通过匹配(字符串到数组和数组到数组)从mysql存储和检索数组数据我在从mysql获取数据时遇到问题

从 MySQL 获取多行输出

使用类从MySQL获取多行[关闭]