我正在尝试从PHP进行查询调用.但是,我不确定为什么它不能正常工作.我要对查询执行的操作似乎有问题.在添加where子句和bindParam之前,一切工作正常.代码正确执行,然后在执行查询和绑定后停止.有人可以看看我是否正确地做到了吗?
可能与致电性别有关.我无法回应$gender.
感谢您的任何见解!
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<title>Practice Work 5</title>
</head>
<body>
<form action="babynames.PHP" method = "post">
Year:<br>
<input type="text" name="year">
<input type="submit" value="Submit">
</form>
<select name = "gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
</body>
</html>
<?PHP>
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "baby";
$year = $_POST['year'];
$gender = $_POST['gender'];
// Create connection
$conn = new MysqLi($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection Failed: " . $conn->connect_error);
}
$sql = "SELECT Year, Name, Ranking, Gender FROM BabyNames where Year = ? and Gender = ?";
$sql -> bindParam (1, $year, PDO::ParaM_INT);
$sql -> bindParam (2, $gender, PDO::ParaM_STR);
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<br> Year: ". $row["Year"]. " ; Name: ". $row["Name"]. " ; Ranking: " . $row["Ranking"] . " ; Gender: " . $row["Gender"]. " ". "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
解决方法:
您的变量$sql是字符串,而不是对象.
根据http://php.net/manual/en/mysqli-stmt.bind-param.php
您必须在绑定参数之前准备语句,例如:
if ($stmt = $conn->prepare($sql)) {
$stmt->bind_param("is", $year, $gender);
$stmt->execute();
$result = $stmt->get_result();
$processedRows = 0;
while ($row = $result->fetch_assoc()) {
$processedRows++;
echo "<br> Year: ". $row["Year"]. " ; Name: ". $row["Name"]. " ; Ranking: " . $row["Ranking"] . " ; Gender: " . $row["Gender"]. " ". "<br>";
}
if (empty($processedRows)) { echo "0 results"; }
}
$conn->close();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。