初学者php mysql如何从一行打印所有列

时间:2017-03-27 01:10:48

标签: php mysql

如果该行的其中一列具有指定值,我正在尝试从数据库中回显整行。

以下是我正在尝试做的一个简单示例:从此

database

我想回应整个行,其中1为'level'的值。因此,例如,最终结果将是:

  

Adam Smith 1 stuff 757890

     

Nelson Mandela 1和另一个东西800656

很自然地我尝试了这个:

$query = "SELECT * FROM data WHERE level = '" . $askedLevel . "'";
$run_query = mysqli_query($mysql, $query);

但是我如何从这里开始回应我想要的东西呢?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

你会遍历每一行,如下所示:

while($row = mysqli_fetch_assoc($run_query)){
    echo $row["first_name"] . $row["last_name"]; 
}

显然,您可以使用所需的任何列名更改"first_name""last_name",但这是您需要做的基础知识。

mysqli_fetch_assoc获取结果并将它们放在一个数组中,以及它们的相对列名。

正如 arif_suhail_123 也指出的那样,您的 SQL 中存在安全问题;也就是说,不使用参数化查询将变量解析为 SQL

要解决这个问题,你要做的是:

$stmt = mysqli_prepare($mysql, "SELECT * FROM data WHERE level = ?");
mysqli_stmt_bind_param($stmt, 'i', $askedLevel); // binding the variable $askedLevel to '?'
$result = mysqli_stmt_execute($stmt); // executing the question 

while($row = mysqli_fetch_assoc($result)){
    // print rows
}

作为参考,i表示整数。 s表示字符串。 d表示加倍。

建议:现在这不是您的查询正常工作所必需的,然而清理(并使其更具可读性)你的 PHP 显着。但是,我强烈建议您切换到面向对象的 PHP

它会将上面的脚本更改为 this ,而不是:

$stmt = $mysql->prepare("SELECT * FROM data WHERE level = ?");
$stmt->bind_param('i', $askedLevel);
$result = $stmt->execute();

while($row = $result->fetch_object()){
    echo $row->first_name . $row->last_name;
}

然而,这完全取决于你! :)