【发布时间】:2018-04-21 19:23:33
【问题描述】:
他为什么不向我显示数据库中的任何结果?我用的是 Mysqli。
<h1>PC's</h1>
<form id="formPcs" method="POST">
<input type="name" placeholder="Circutor_xxx">
<input type="submit" value="Buscar" name="namehost">
</form>
<?php
$connect = mysqli_connect("localhost","root","","circutor");
if (@isset($_POST['namehost'])) {
$viewquery = mysqli_query($connect, "SELECT * FROM hosts WHERE hostname='$_POST[namehost]'");
if (mysqli_num_rows($viewquery) > 0) {
while ($listar = mysqli_fetch_array($viewquery)) {
?>
<h3><?php echo $listar['hostname']; ?></h3>
<?php
}
}else{
echo "NO HAY RESULTADOS EN LA BBDD";
}
}else{
$viewquery = mysqli_query($connect, "SELECT * FROM hosts ORDER BY id ASC");
while ($listar = mysqli_fetch_array($viewquery)) {
?>
<h3><?php echo $listar['hostname']; ?></h3>
<?php
}
}
?>
Este archivo es el que procesa la búsqueda, y no entiendo por qué salta directamente al else, también probado con LIKE de mysql y tampoco me working, necesito。
【问题讨论】:
-
注意:
mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)和$db->prepare("…")过程化接口是 PHP 4 时代引入mysqliAPI 时的产物,不应在新代码中使用。 -
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
编辑您的问题并添加表模式,并显示一些示例数据以及预期的输出。如果还没有打开错误报告,也打开它。由于提供的信息有限,有很多原因没有出现。例如,可能是数据问题。
-
为什么要在
isset()上使用抑制运算符? -
为什么会有非英文文本?为什么不回复其他cmets?
标签: php mysql html search mysqli