2017-06-12 46 views
-2

我是新的PHP和我已经创建一个项目,从数据库中的数据作为用户选择,并且当项目的执行发生了一个错误的方法,和我现在没有如何解决它。 听到的是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> 

,这是在浏览器的输出: - enter image description here

+2

的可能重复[参考 - 这是什么错误PHP的意思(https://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php) – CBroe

+1

此错误消息已经被讨论过无数次,所以您可以轻松_研究它。除此之外,它已经告诉你简单英语中的错误。 – CBroe

回答

0

根据PHP Docsexecute应没有任何参数(void),它只执行当前查询。

您应该通过您的参数填写查询bindValuebindParamLook at his example看到这种方式的正确方法。

也许这样的事情修复它,$meal必须是唯一的一个字符串,而不是一个数组,但:

$stmt = $db->prepare('SELECT dish, price FROM meals WHERE meal LIKE ?'); 
$stmt->bindValue(1, $meal, SQLITE3_TEXT); 
0

您PARAMS传递给你需要在执行这里怎么不能用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";} ?>