如何使用 MySQLi 和 PHP 从 MySQL 数据库中获取单行?

How to fetch a single row from a MySQL DB using MySQLi with PHP?

我在 MySQli 中使用 PHP,我想从整个 SQL 数据库中获取一行,这符合我的条件。请注意,这就是我当前的数据库的样子:

我想得到那一行,例如。 txnid 列的值 == $txnid (a variable)。我尝试构建符合我要求的 SQL 查询,它看起来像这样:$sql = "SELECT * FROM 'table1' WHERE 'txnid' = " . $txnid;。当我在 phpMyAdmin 中使用 raw-运行 这个查询时,它按预期工作。我只想知道,在我 运行 PHP 中的查询之后,如何使用 MySQLi 获取作为查询响应的那一行数据?

这是我用于 运行 查询的代码:

$servername = "localhost";
$username = "XXXXXXXXXXXXXX";
$password = "XXXXXXXXXXXXXX";
$dbname = "XXXXXXXXXXXXXXXX";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$txnid = $_GET['id'];

$sql = "SELECT * FROM `testtable1` WHERE `txnid` = " . $txnid;

if ($conn->query($sql) === TRUE) {
    echo ""; //what should I do here, if I want to echo the 'date' param of the fetched row?
} else {
    echo "Error: " . $sql . "<br>" . $conn->error . "<br>";
}

LIMIT 1 添加到查询的末尾以生成单行数据。

您的方法容易受到 SQL 注入攻击。使用准备好的语句来避免这种情况。以下是您可以查看的一些链接:


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8mb4");

$txnid= $_GET['name_of_txnid_input_field'];

// prepare and bind
$stmt = $conn->prepare("SELECT * FROM `testtable1` WHERE `txnid` = ? LIMIT 1");
$stmt->bind_param("i", $txnid);

// set parameters and execute
$stmt->execute();

$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo $row['date_field_you_want_to_display'];
$txnid = $_POST['txnid'];   
$sql = "SELECT * FROM tableName WHERE txnid = $txnid";
$result = $conn->query($sql);