0

我无法让它工作而没有得到“在第 5 行调用 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,所以我对这个概念没有最好的把握。任何帮助将不胜感激。

4

3 回答 3

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));
于 2013-05-12T17:23:35.530 回答
2
function addBookmark($url, $conn){
    $stmt = $conn->prepare('INSERT INTO entries (url) VALUES (?)');
    $stmt->execute(array($url));
}
于 2013-05-12T17:57:05.323 回答
1

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

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

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

于 2013-05-12T17:23:46.353 回答