簡體   English   中英

如何echo MySQL 數據庫沒有返回任何東西?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM