【问题标题】:Select and display from MySQL table with php用php从MySQL表中选择并显示
【发布时间】:2015-04-27 09:40:24
【问题描述】:

我想选择所有具有 $name 的行,但它只显示第一行。我的桌子是这样的

id 
name
password
email

代码:

$result = mysql_fetch_assoc(mysql_query("SELECT * FROM  data WHERE username ='$name'"));

print_r($result);

这不起作用,它只显示第一行。

【问题讨论】:

  • mysql 已弃用,您应该查看 mysqli 或 PDO。
  • 您是否检查过您输入的用户名有多个条目
  • 是的,先生,现在已修复 $query= mysql_query("SELECT * FROM data WHERE username ='$name'"); $finalRes = 数组(); while($result = mysql_fetch_assoc($query)) { $finalRes[] = $result; } print_r($finalRes);

标签: javascript php html mysql forms


【解决方案1】:

这样用比较好

$query= mysql_query("SELECT * FROM data WHERE username ='$name'");
$finalRes = array();
while($result = mysql_fetch_assoc($query))
{
   $finalRes[] = $result;
}
print_r($finalRes);

【讨论】:

  • 如果它解决了您的问题,那么请接受答案。
【解决方案2】:

你应该看看错误:

<?php

$result = mysql_query("SELECT * FROM  data WHERE username = '$name'");
if (!$result) {
    var_export(mysql_error());
}
$data = [];
while ($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}
var_export($data);

别忘了 sql 注入...

PDO:

<?php

try {
    $dbh = new PDO('mysql:dbname=test;host=127.0.0.1', 'root');
} catch (PDOException $e) {
    echo 'Connection failed: '.$e->getMessage();
}
$name = 'yourName';
$sth = $dbh->prepare('SELECT * FROM  data WHERE username = :name');
$sth->bindParam(':name', $name, PDO::PARAM_STR);
if (!$sth->execute()) {
    throw new Exception($sth->errorInfo());
}
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
var_export($result);

【讨论】:

  • 1) "SELECT * FROM data WHERE username = '$name'" - 这是一个洞。写这个 - 这是不好的做法......但问题不在这个...... 2)我想:如果发生错误,它应该被处理......var_export(mysql_error());
  • 好的,我会更多地研究如何防止sql注入,现在只放 var_export(mysql_error());在每次查询之后。
  • 我建议您使用 PDO!)并确保您的用户确实存在于数据库中)
  • 好吧 PDO 就是这样,它更安全还是什么?
  • 是的!安全、性能等等...我添加了 pdo 示例,看起来几乎一样,但更强大...
【解决方案3】:

这样试试

    $sql = "select * from data where username='$username'";
    $res = mysql_query($sql);
    while ($row = mysql_fetch_array($res))
   {
   print_r($row);
   }

我已更改代码尝试此循环,以便打印所有数据,如果不让我们知道

【讨论】:

  • 它仍然只显示第一行 // Array ( [0] => 9 [id] => 9 [1] => anis [username] => anis [2] => test [电子邮件] => 测试 [3] => 测试 [密码] => 测试)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多