如果该行的其中一列具有指定值,我正在尝试从数据库中回显整行。
以下是我正在尝试做的一个简单示例:从此
我想回应整个行,其中1为'level'的值。因此,例如,最终结果将是:
Adam Smith 1 stuff 757890
Nelson Mandela 1和另一个东西800656
很自然地我尝试了这个:
$query = "SELECT * FROM data WHERE level = '" . $askedLevel . "'";
$run_query = mysqli_query($mysql, $query);
但是我如何从这里开始回应我想要的东西呢?
感谢您的帮助
答案 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;
}
然而,这完全取决于你! :)