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新手,我已经创建了一个项目,将数据库中的数据作为用户选择,当项目执行时,它在一个方法中出现错误,我现在不知道如何解决它。 这是php代码:-

     <?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";}  ?>

此错误消息的可能重复已经讨论过无数次,因此您可以轻松地对其进行研究。除此之外,它已经用简单的英语告诉你哪里错了。