【问题标题】:Can't echo array properly无法正确回显数组
【发布时间】:2015-03-02 00:24:21
【问题描述】:

我在数据库中的表包含 3 列,所有列都有 qwe 作为用户名,并且分别具有 1 月、2 月和 3 月的日期,但是当我尝试回显它们时,它只显示 1 月。我正在尝试将它们全部放入一个下拉列表中,但我无法超越这个,所以我必须确保在将它们放在其他地方之前获得所有这些日期。

{   
$con=mysqli_connect('localhost','root','') or die(mysqli_error());
mysqli_select_db($con, 'useddates') or die("cannot select DB");

$request="SELECT date FROM mytable WHERE username='qwe'";
$result=mysqli_query($con, $request);
$fetch=mysqli_fetch_assoc($result);

echo $fetch['date']; echo "<br>";
print_r($fetch);
}

【问题讨论】:

  • 只循环结果。一个基本的 PHP/MySQL 教程总是展示如何做到这一点。
  • 哦,好的,谢谢。我的代码没有任何问题对吗?只是我错过了一个循环?
  • 是的。你快到了。 :)

标签: php mysql arrays fetch


【解决方案1】:

您缺少循环,数据出现。使用print_r($fetch)可以看到打印数据的时候,使用循环一一显示。 并且在检查mysql injection之前尽量不要在查询中直接使用用户输入。就像你把 username='qwe' 如果用户名是用户输入然后直接在查询中使用它查询建议

$request = "SELECT date FROM mytable WHERE username=".mysql_real_escape_string('qwe'); 

你的 with 循环试试这个,

$con = mysqli_connect('localhost', 'root', '') or die(mysqli_error());
mysqli_select_db($con, 'useddates') or die("cannot select DB");

$request = "SELECT date FROM mytable WHERE username='qwe'";
$result = mysqli_query($con, $request);
print_r($fetch);
while ($fetch = mysqli_fetch_assoc($result)) {
    echo $fetch['date'];
    echo "<br>";
}

?>

【讨论】:

  • 非常感谢!这绝对成功了!我在玩foreach,结果是无限量的一月(我可以听到我的系统单元的处理xD)。如果你不介意我问一下,如果我使用 username='qwe' 而不是你建议的那个有什么缺点?
  • 欢迎您@CarlDun。不,亲爱的,我不会介意你可以在这里看到与我在上面的 sql 注入中建议的内容相关的文档。 tizag.com/mysqlTutorial/mysql-php-sql-injection.php
  • 再次感谢。您不仅帮助我解决了我的问题,还帮助我解决了我的程序安全问题!这是一个巨大的信息,因为我什至不知道 php 中的攻击类型。
猜你喜欢
  • 2017-12-07
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2020-03-14
  • 1970-01-01
相关资源
最近更新 更多