2013-04-17 48 views
-1

我做错了什么?我知道一个事实与准备好的陈述有关。谢谢!我的pdo预备声明有什么问题?

编辑:这里是脚本的所有代码,所以每个人都可以看到发生了什么。我现在不得不添加更多的单词b/c表单不喜欢我添加多少代码。

<? if($_SERVER['REQUEST_METHOD'] == "POST"){ 
    include_once("includes/connect.php");  

    session_start(); 

    $error = array(); 
    $success = "The artist has been added!"; 

    if(!empty($_POST['artist-name'])){ 
     $artistName = $_POST['artist-name']; 
    } else{ 
     $error[] = "Please enter a valid artist name!"; 
    } 

    if(empty($error)){   

     //prepared statement goes here "INSERT INTO artist VALUES(?)" 
     try{ 
      $pdo = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $stmt = $pdo->prepare("INSERT INTO artist(name) VALUES(:artist)"); 
      $stmt->execute(array("artist" => $artistName)); 
      while($row = $stmt->fetch()) { 
       print_r($row); 
      } 
     } catch(PDOException $e){ 
         echo $e->getMessage(); 
     } 

     //$_SESSION["success"] = $success; 

    } else { 
     $_SESSION["error"] = $error; 
    } 

    header("Location: ../add-artist.php"); 
    exit();        

} 
?> 
+1

您是否收到任何错误消息? –

+0

发生了什么事情或没有发生? *“这是一些代码,告诉我它是否有效,为什么不”*很难回答。 – deceze

+0

只是500内部服务器错误消息。我加了error_reporting(E_ALL); ini_set('display_errors','On');在一点上,但它没有摆脱500条消息 – heyjohnmurray

回答

1
$stmt = $pdo->prepare("INSERT INTO artist VALUES(:artist)"); 

的参数称为:artist

$stmt->execute(array('artist' => $artistName)); 

你叫它artist。冒号也应该在那里,即使它是内部添加的。

关于错误,在这种情况下唯一不会被异常捕获的错误是致命的错误。在php.ini中有error_reporting = -1display_errors = On应该使错误可见。否则,请使用error_log .ini设置。

+2

它应该没有冒号。 – pfyod

+0

@杰克,谢谢,但我试过,并没有解决它。我仍然有错误。 – heyjohnmurray

+0

@heyjohnmurray什么是*错误? –