简单的PDO连接/准备语句查询

时间:2013-05-12 17:18:15

标签: php pdo

我无法解决这个问题而无法在第5行和第34行调用C:\ xampp \ htdocs \ bookmarks \ index.php中的未定义方法PDO :: execute() ;

<?php

    function addBookmark($url, $conn){
        $conn->prepare('INSERT INTO entries (url) VALUES (:url)');
        $conn->execute(array(':url' => $url));
    }

    try {
        $conn = new PDO('mysql:dbname=bookmarks;host=localhost', 'username', 'password');
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        if(isset($_POST['bookmark'])) {
            addBookmark($_POST['bookmark'], $conn);
        }

        $results = $conn->query('select * from bookmarks.entries');

    } catch (exception $e) {
        die($e->getMessage());
    }

?>

我今天刚开始使用PDO,所以我对这个概念没有最好的把握。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

连接字符串似乎有点不对。

'mysql:bookmarks'

还应该有一个主持人;而bookmarks就是我认为的数据库名称!

'mysql:dbname=bookmarks;host=localhost'

$conn->prepare('INSERT INTO entries (url) VALUES (:url)');
$conn->execute(array(':url' => $url));

需要重写如下:

$stmt = $conn->prepare('INSERT INTO entries (url) VALUES (:url)');
$stmt->execute(array(':url' => $url));

答案 1 :(得分:2)

function addBookmark($url, $conn){
    $stmt = $conn->prepare('INSERT INTO entries (url) VALUES (?)');
    $stmt->execute(array($url));
}

答案 2 :(得分:1)

我不确切知道,但我创建连接字符串的方式是

mysql:host=localhost;database=database
mysql:host=localhost;dbname=database

我不知道是否还有其他解决方法。我忘了它的数据库还是dbname