我的pdo预处理语句有什么问题?


what's wrong with my pdo prepared statement?

我做错了什么?我知道这与事先准备好的陈述有关。谢谢!

编辑:这里是脚本的所有代码,这样每个人都可以看到发生了什么。我现在必须添加更多的单词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();                             
}
?>
$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设置