如何解决如何使用MySQLi和PHP从MySQL数据库中获取一行?
我正在将PHP与MySQli一起使用,我想从整个SQL数据库中获取一行,这符合我的情况。仅作说明,这就是我当前的数据库:
我想得到那一行,例如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>";
}
解决方法
在查询末尾添加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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。