簡體   English   中英

如何使用 MySQLi 在 PHP 中獲取數據?

[英]How to fetch data in PHP with MySQLi?

我嘗試了幾次,但無法成功獲得正確的語法——根據 PHP 5.5.12——從我的數據庫中獲取單行或多行。

session_start();
$con=mysqli_connect("localhost","root","","doortolearn");
if (!$con) {
    echo "Could not connect to DBMS";       
}
    $query="select * from teacher where tremail='$_POST[email]' and trpasssword='$_POST[password]'";
    $result=mysqli_query($con,$query);
    $flag=FALSE;
    while ($row=mysqli_fetch_array($result,MYSQLI_BOTH)) {
        $_SESSION['email']=$row['email'];
        $flag=TRUE;
    }

首先,您在$_POST[password]周圍沒有單引號'

$query = "SELECT * FROM teacher WHERE tremail='". $_POST['email'] ."' and trpasssword='" . $_POST['password'] . "'";
$result = mysqli_query($con, $query) or die(mysqli_error($con));
$flag = FALSE;
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    $_SESSION['email'] = $row['email'];
    $flag = TRUE;
}

但除此之外,您是否甚至在此處設置了 MySQL 數據庫連接? 我看到$con但這真的有效嗎?

另外,通過在mysqli_query($con, $query)行中添加or die(mysql_error($con))來檢查是否存在錯誤。

另外,您有一個$_SESSION值,但是您是否在腳本的開頭設置了session_start

但我也建議您使用mysqli_stmt_bind_param作為您的值,如果您不打算進行基本驗證,至少可以轉義它們:

$query = "SELECT * FROM teacher WHERE tremail=? and trpasssword=?";
mysqli_stmt_bind_param($query, 'ss', $_POST['email'], $_POST['password']);
$result = mysqli_query($con, $query) or die(mysqli_error($con));
$flag = FALSE;
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    $_SESSION['email'] = $row['email'];
    $flag = TRUE;
}

要使用 PHP 中的 mysqli 擴展成功從 MySQL 獲取數據,您需要執行或多或少的三個操作:連接、執行准備好的語句、獲取數據。

聯系:

連接非常簡單。 打開連接應該總是只有 3 行代碼。 您啟用錯誤報告,創建 mysqli 的新實例,並設置正確的字符集。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'pass', 'db_name');
$mysqli->set_charset('utf8mb4');

准備好的聲明

這是棘手的部分。 您需要准備要執行的 SQL 語句。 小心,切勿將 PHP 變量直接連接到 SQL 中 使用占位符綁定變量。 一旦語句准備好,您就可以在服務器上執行它。

$stmt = $mysqli->prepare('SELECT * FROM teacher WHERE tremail=?');
$stmt->bind_param('s', $_POST['email']);
$stmt->execute();

獲取數據

如果你准備好的語句應該返回一些結果,你需要獲取它們並對記錄做一些事情。 要獲取結果,請使用get_result() 這將為您提供一個對象,您可以對其進行迭代以逐行獲取。

$result = $stmt->get_result();
foreach ($result as $row) {
    echo $row['user_id'];
}

如果您剛開始學習 PHP,請考慮學習PDO 它更易於使用並提供更多功能。 僅將 mysqli 用於遺留項目。

你可以試試這個代碼嗎


<?php $query=mysqli_query($connection, "SELECT * FROM user");
while($rows=mysqli_fetch_array($query)){ ?>
<tr>
<td><?php echo $rows['name']; ?></td>
<td><?php echo $rows['age']; ?></td>
<td><?php echo $rows['mobile']; ?></td>
<td><?php echo $rows['email']; ?></td>
</tr>
<?php } ?>
$r =$mysqli->query("select * from users");

while ( $row =  $r->fetch_assoc() )
{
?>
  <tr>
  <td><?php echo $i++; ?></td>
  <td><?php echo $row['name']; ?></td>
  <td><?php echo $row['pwd']; ?></td>
  </tr>
  <?php
  }
  ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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