我在 MySQli 中使用 PHP,我想从整个 SQL DB 中获取一行,这符合我的条件。只是为了说明,这就是我当前的数据库的样子:
我想得到那一行,例如。txnid列的值 == $txnid (a variable)。我试图建立SQL查询这将满足我的要求,这里是它的样子:$sql = "SELECT * FROM 'table1' WHERE 'txnid' = " . $txnid;。当我在 phpMyAdmin 中原始运行此查询时,它按预期工作。我只想知道,在我在 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>";
}
Run Code Online (Sandbox Code Playgroud)
添加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'];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |