PHP,数据库方法上的一个错误
我是php新手,我已经创建了一个项目,将数据库中的数据作为用户选择,当项目执行时,它在一个方法中出现错误,我现在不知道如何解决它。 这是php代码:-PHP,数据库方法上的一个错误,php,html,mysql,Php,Html,Mysql,我是php新手,我已经创建了一个项目,将数据库中的数据作为用户选择,当项目执行时,它在一个方法中出现错误,我现在不知道如何解决它。 这是php代码:- <?php $db = new PDO('sqlite:dinner.db'); $meals = array('breakfast','lunch','dinner'); if(in_array( $_POST['meal'], $meals)){ $stmt = $db-&g
<?php
$db = new PDO('sqlite:dinner.db');
$meals = array('breakfast','lunch','dinner');
if(in_array( $_POST['meal'], $meals)){
$stmt = $db->prepare('SELECT dish,price FROM meals WHERE meal LIKE ?');
$stmt->execute(array($_POST['meal']));
$rows = $stmt->fetchAll();
if(count($rows) == 0){
print "No dishes available now";
} else {
print "<table><tr><th>dish</th><th>price</th></tr>";
foreach($rows as $row) {
print "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}
print "</table>";
}
} else {
print "Unknown meal";
}
?>
这就是html页面代码:
<html>
<head>
</head>
<body>
<form method="post" action="test.php">
<lable>Select the meal to see all the available dishes:
<input type="text" name="meal">
</lable><input type="submit" value="Ok">
</form>
</body>
</html>
选择膳食以查看所有可用菜肴:
这就是浏览器上的输出:-根据执行
不应该有任何参数(void),它只执行当前查询
您应该通过bindValue
或bindParam
传递参数来填充查询。看看这种方式的正确方法
也许类似的东西可以解决这个问题,$mean
必须只有一个字符串,而不是一个数组:
$stmt = $db->prepare('SELECT dish, price FROM meals WHERE meal LIKE ?');
$stmt->bindValue(1, $meal, SQLITE3_TEXT);
要将参数传递给查询,您需要使用bindparams,而不是在“执行方式”中:
<?php
$db = new PDO('sqlite:dinner.db');
$meals = array('breakfast','lunch','dinner');
if(in_array( $_POST['meal'], $meals)){
$stmt = $db->prepare('SELECT dish,price FROM meals WHERE meal LIKE ?');
$stmt->bindParam(1, $_POST['meal']);
$stmt->execute();
$rows = $stmt->fetchAll();
if(count($rows) == 0){
print "No dishes available now";
} else {
print "<table><tr><th>dish</th><th>price</th></tr>";
foreach($rows as $row) {
print "<tr><td>$row[0]</td><td>$row[1]</td></tr>";
}
print "</table>";
}
} else { print "Unknown meal";} ?>
此错误消息的可能重复已经讨论过无数次,因此您可以轻松地对其进行研究。除此之外,它已经用简单的英语告诉你哪里错了。