【问题标题】:Echo specific rows from a mysql database从 mysql 数据库回显特定行
【发布时间】:2014-02-03 23:55:22
【问题描述】:

我创建了一个要求用户添加的表单: 名字、姓氏、位置、状态

一段时间后,我收到了 5 个输入。 mysql表名为users,表数据如下:

id first_name location status  
== ========== ======== ========  
1   Chris       UK       Married  
2   Anton       Spain    Single  
3   Jacob       UK       Single  
4   Mike        Greece   Married  
5   George      UK       Married  

也是我通过 POST 方法接收输入的方式。所以:

$firstname=$_POST['FIRST_NAME']; // First Name: <input type="text" name="FIRST_NAME">
$location=$_POST['LOCATION']; // Location: <input type="text" name="LOCATION">
$status=$_POST['STATUS']; // Status: <input type="text" name="STATUS">

我创建了一个查询来选择来自英国的所有已婚用户:

$query = "SELECT * FROM users WHERE location='UK' AND status='Married'";
$result = mysqli_query($dbc,$query); //$dbc is the connection to my database

$row = mysqli_fetch_array($results, MYSQLI_BOTH);

换句话说:

id first_name location status  
== ========== ======== ========  
1   Chris       UK       Married  
5   George      UK       Married

问题:

1) $row 数组是否如下所示:

$row= array(
array(1 Chris UK Married),
array(5 George UK Married) 
);

2) 实现过滤 WHERE location='UK' AND status='Married' 后如何回显数据库内容?

我需要它是这样的:

Hello Chris! You are from UK and you are married!

Hello George! You are from UK and you are married!

我知道我必须使用 foreach 循环(回声数组),但我已经尝试过了,但它不起作用。我尝试过的事情之一是我在 php.net 中找到的:

用 list() 解包嵌套数组

(PHP 5 >= 5.5.0)

PHP 5.5 添加了迭代数组数组并将嵌套数组解压缩为循环变量的功能,方法是提供 list() 作为值。

例如:

<?php
$array = [
[1, 2],
[3, 4],
];

foreach ($array as list($a, $b)) {
// $a contains the first element of the nested array,
// and $b contains the second element.
echo "A: $a; B: $b\n";
}
?> 

当我使用上述内容时,我收到以下错误:

Parse error: syntax error, unexpected T_LIST in C:\wamp\www....

有什么建议吗?

据我了解,我必须以某种方式将 ID 与其他数据关联起来。

提前致谢。

【问题讨论】:

  • 你需要循环来获取所有数据 while($row = mysqli_fetch_array($results, MYSQLI_BOTH)) {echo $row['id']; // 所有其他}
  • 对于问题1:如果你想知道某个东西的结构,你可以使用var_dump,例如。 var_dump($row)

标签: php mysql sql arrays


【解决方案1】:

你可以这样使用:

$query = "SELECT * FROM users WHERE location='UK' AND status='Married'";
$result = mysqli_query($dbc,$query);

while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){
    printf("Hello %s! You are from %s and you are %s!\n", $row['first_name'], $row['location'],$row['status']);
}

【讨论】:

  • 但如果我没记错的话,如果我这样做了,它只会返回数组的第一行。那是我最初的问题。这就是为什么我要问是否有办法将行与 id 链接以创建一个循环并返回所有行。
  • @user3185108 它将显示所有过滤后的数据。不仅是第一行,除非您只有一个过滤数据的输入。
  • 你是对的!谢谢您的帮助!按照你说的方法我已经试过了,但是没用!也许我做错了什么!再次感谢!
【解决方案2】:

mysqli_fetch_array 返回单行。您需要循环获取所有行。您可以从行中获取值并将其放置在如下字符串中:

while($row = mysqli_fetch_array($results, MYSQLI_BOTH)){
    echo "Hi ".$row['first_name'] . " You are from ".$row['location']." and you are ".$row['status']."!";
}

【讨论】:

    【解决方案3】:

    对于问题 2:我猜您可以在 sql 查询本身中添加格式:

    "SELECT OUTPUT = "Hello" + name + "! You are from UK and you are married!" FROM users WHERE location='UK' AND status='Married'";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2017-12-18
      • 2021-07-09
      相关资源
      最近更新 更多