如何回显MySQL数据库没有返回任何东西



我的问题是,如果用户键入的值不在我的数据库中,页面将保持空白。我想显示一条信息,说明他们的邮政编码无效。我浏览了其他帖子,似乎无法将其与我的代码配合使用。

用户在文本框中搜索以找出其邮政编码的交货"价格",即搜索m6,并在表中返回m6-0.50。如果说他们键入了sk1,这不是交付区域的一部分,我想显示一条消息

我所做的如下:

index.php

<section id="post">
<p id="post"> postage calculator for manchester: </P>
<?PHP
session_start();
echo 'total cost £'. $_SESSION['postage'];
?>
<form action="shop.php" method="post">
<input class="text" type="text" name="postsub" min="0">
<input class="button" type="submit" name="postsub1" value="postsub" >
</form>
</section>

process.php:

function button6() {
$search_value = $_POST["postsub"];
$codequery = "SELECT * FROM postage WHERE postcode LIKE '%$search_value%'";
// connect to database
$dbh= new PDO('mysql:host='.$hostname.';dbname='.$dbname,$username,$password);
//generate SQL query
$result=$dbh->prepare($codequery);
//execute query
$result->execute();
// display result
echo '<table id="tab">';
while($row=$result->fetch()){
echo '<tr>';
echo '<td>'.$row['postcode'].'</td>';
echo '<td>'.$row['price'].'</td>';
echo '</tr>';
if (mysqli_num_rows($result)==0) { echo "no result"; }
}
echo '</table>';
}

这就是它在积极搜索中的返回方式,我只想要邮政编码和价格,然后当它不是任何一个时,只显示没有结果:

no resultno resultno resultno resultno resultno resultno result
m1  0.50
m2  0.50
m3  0.70
m4  0.70
m5  1
m6  1
m7  1.20

试试这个:

<?php
function button6() {
$search_value = $_POST["postsub"];
$codequery = "SELECT * FROM postage WHERE postcode LIKE '%$search_value%'";
// connect to database
$dbh= new PDO('mysql:host='.$hostname.';dbname='.$dbname,$username,$password);
//generate SQL query
$result=$dbh->prepare($codequery);
//execute query
$result->execute();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo '<tr>';
echo '<td>'.$row['postcode'].'</td>';
echo '<td>'.$row['price'].'</td>';
echo '</tr>';    
}
} else {
echo "No results";
}  
} 
?>

您的函数有很多问题。一个简单的修复方法是删除无效的mysqli_num_rows()if语句并参数化SQL。您还应该在函数外部连接一次,然后将连接传递到函数中。

最好的选择通常是将所有行提取到一个数组中,然后根据该数据生成一个if语句。如果$data中没有值,则显示一些消息。

function button6(PDO $dbh) {
$search_value = $_POST["postsub"];
$codequery = "SELECT * FROM postage WHERE postcode LIKE ?";

//generate SQL query
$result = $dbh->prepare($codequery);

//execute query
$result->execute(["%$search_value%"]);
$data = $result->fetchAll(PDO::FETCH_ASSOC);

if ($data) {
// display result
echo '<table id="tab">';
foreach ($data as $row) {
echo '<tr>';
echo '<td>'.$row['postcode'].'</td>';
echo '<td>'.$row['price'].'</td>';
echo '</tr>';
}
echo '</table>';
} else {
echo 'No results!';
}
}

要连接PDO,只需将这段代码放在应用程序中的一个位置即可。


$pdo = new PDO("mysql:host=localhost;dbname=$dbname;charset=utf8mb4", $username,$password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false
]);

然后,当您调用函数时,只需将其作为参数传递即可。

button6($pdo);

最新更新