我正在尝试使用以下语句返回单个记录:
$username = $_POST["username"];
$con=mysqli_connect("localhost","root","pass","Testproject");
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = mysqli_query($con,"SELECT * FROM registeredusers where Username=".$username);
$row = mysqli_fetch_array($sql);
if (!$row) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
我收到以下错误:
警告:mysqli_fetch_array()期望参数1为mysqli_result, “Filepath go here”中给出的布尔值/AddEvent.php错误:未知 'where子句'中的列'Tom'
在这种情况下,“Tom”是用户名。任何想法如何解决这一问题?我在stackoverflow上看过类似的问题,但是大多数都有点复杂或者没有尝试获得单个记录。
编辑:我已将查询更改为以下内容:
$sql = mysqli_query($con,"SELECT * FROM registeredusers") or die(mysqli_error($con));
$row = mysqli_fetch_array($sql);
并添加了这个“
$row_cnt = $result->num_rows;
printf("Result set has %d rows.\n", $row_cnt);
我得到以下内容:
“结果集有0行”。
我在DBMS中输入了确切的查询,并返回了很多行。
答案 0 :(得分:1)
您缺少$ username的引号,并且易受SQL注入攻击。我建议你绑定变量,所以MySQLi会做引用并保护你免受SQL注入:
$sql = "SELECT * FROM registeredusers where Username = ?";
if ($stmt = $con->prepare($sql)) {
$stmt->bind_param('s', $username);
$stmt->execute();
$results = $stmt->get_result();
$row = mysqli_fetch_array($results);
var_dump($row);
}