【问题标题】:MySQL query not outputting result only headingMySQL查询不输出结果仅标题
【发布时间】:2017-12-08 00:03:17
【问题描述】:

我目前正在练习 PHP 和 AJAX,我正在尝试创建一个允许用户实时搜索数据库以查找产品库存的应用程序。当用户在其中一个条目中输入字母时,会显示标题,但不会显示数据。我不确定我是否做错了,但我会让你们来判断。代码如下:

Results.php - 下面

 <!DOCTYPE html>
<html>
<head>
<title>Results</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<?php
$q = intval($_GET['q']);

$con = mysqli_connect("localhost", "username", "password", "databaseName");
//edited out for safety 

if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,"jakeholc_ajaxtest");

$sql="SELECT * FROM stock WHERE name LIKE '%{$q}%'";
$result = mysqli_query($con,$sql);

echo "<table>
<tr>
<th>Product name</th>
<th>Description</th>
<th>Price</th>
<th>Quantity</th>
</tr>";

if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['descr'] . "</td>";
echo "<td>" . $row['price'] . "</td>";
echo "<td>" . $row['quantity'] . "</td>";
echo "</tr>";
}
}


echo "</table>";
mysqli_close($con);
?>

【问题讨论】:

  • 如果您已经在 mysqli_connect() 中提供了数据库名称,为什么还要使用 mysqli_select_db()
  • 鉴于您没有明显的错误,我认为可以安全地假设您的查询没有返回任何结果。你可以做一些非常基本的调试来 a) 确认是这种情况,b) 找出为什么你没有得到结果

标签: php html css mysql ajax


【解决方案1】:

$q = intval($_GET['q']); 尝试将您的输入转换为整数。删除此行。

【讨论】:

  • 另外,您需要清理输入,以免受到 SQL 注入攻击
  • 为输入伙伴干杯,它没有解决问题,但我感谢你的努力!
  • 也为预防 SQL 注入的提醒欢呼,我知道这一点,但只是想在进一步复杂化之前让基本功能正常工作:D
  • 删除 intval() 行后,您在 q 变量中放入了什么?我假设您使用的是 URL?q=name,因为您使用的是 $_GET。
  • @BobK 所以第一次就学会了。解决这样的安全问题事实要困难得多
【解决方案2】:

你可以试试我的代码。我已经测试过这个。每次输入文本时,输入的文本都会匹配数据库中的某些记录,如果有匹配的记录,则会显示与输入的文本匹配的记录。希望这会有所帮助:) 请注意以下代码是“ajax_search.php”的内容。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#search").keyup(function() {
var name = $('#search').val();
if (name == "") {
$("#display").html("");
}
else {
$.ajax({
type: "POST",
url: "ajax_search.php",
data: {
search: name
},
success: function(html) {
$("#display").html(html).show();
}
});
} 
}); 
});
</script>   
</head>

<body>
<input type="text" id="search" placeholder="Search Product Here..." />
<?php
$con = mysqli_connect("localhost","username","password","databasename"); 
if (mysqli_connect_errno()) {
echo "Database Connection Failed: " . mysqli_connect_error();
}
?>
<?php
if (isset($_POST['search'])) {
$key = $_POST['search'];
$query = "SELECT * FROM stock  WHERE name LIKE '%$key%' OR descr LIKE '%$key%' OR price LIKE '%$key%' OR quantity LIKE '%$key%' ";
$execute_query = mysqli_query($con, $query);
echo "<table border='3px' cellpadding='3px' cellspacing='3px' bgcolor='skyblue' align='center'>";
echo "<tr>";
echo "<td>Product Name</td>";
echo "<td>Description</td>";
echo "<td>Price</td>";
echo "<td>Quantity</td>";
echo "</tr>";
while ($result = mysqli_fetch_array($execute_query)) {
echo "<tr>";
echo "<td>".$result['name']."</td>";
echo "<td>".$result['descr']."</td>";
echo "<td>".$result['price']."</td>";
echo "<td>".$result['quantity']."</td>";
echo "</tr>";
}}
mysqli_close($con);
?>
</table>
<div id="display">
<!-- Ouput will display here -->
</div>
</body>
</html>

【讨论】:

    猜你喜欢
    • 2015-07-12
    • 2017-04-12
    • 2013-07-27
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多