[英]How to echo MySQL database has not returned anything?
我的問題是,如果用戶輸入的值不在我的數據庫中,則頁面將保持空白。 我希望顯示一條消息,說明他們的郵政編碼無效。 我瀏覽了其他帖子,但似乎無法讓它與我的代碼一起使用。
用戶在文本框中搜索以找出其郵政編碼的送貨“價格”,即他們搜索 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>
進程.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
你的 function 有很多問題。 一個簡單的修復方法是刪除無效的mysqli_num_rows()
和if
語句並參數化 SQL。您還應該在 function 外部連接一次,然后將連接傳遞到 function。
最好的選擇通常是將所有行提取到一個數組中,然后有一個基於該數據的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
]);
然后,當您調用 function 時,只需將其作為參數傳遞即可。
button6($pdo);
試試這個:
<?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";
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.