简单的PDO连接/prepare语句查询


Simple PDO connection/prepare statement query

我在获取"调用未定义方法PDO::execute()在C:'xampp'htdocs'bookmarks'index.php第5行"时遇到了麻烦

<?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,所以我对这个概念没有最好的把握。

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

连接字符串似乎有点错误。

'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));

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

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

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