Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql编写的语句,难以理解其工作原理_Php_Mysql_Prepared Statement - Fatal编程技术网

Php mysql编写的语句,难以理解其工作原理

Php mysql编写的语句,难以理解其工作原理,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我正在尝试使用准备好的语句,但无法使其成功运行。 这是我的密码: function addAlbum($album){ $connection = mysqli_connect(HOST,USER,PASS,DATABASE); /*$sql = 'INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")'; $result = mysqli_query($connectio

我正在尝试使用准备好的语句,但无法使其成功运行。 这是我的密码:

 function addAlbum($album){
        $connection = mysqli_connect(HOST,USER,PASS,DATABASE);
        /*$sql = 'INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")';
        $result = mysqli_query($connection,$sql);*/
        $stmt = $dbh->prepare('INSERT INTO `'.TABLE_ALBUMS.'` (albumName) VALUES ("'.$album.'")');
        $stmt->bindParam(':albumName', $album);
        $result = $stmt->execute();

        if($result){
            header("Location: index.php?success");
        } else {
            header("Location: index.php?fail");
        }

    }
我在firefox中运行了此程序,但出现了错误,我得到的结果如下:

致命错误:调用未定义的方法 中的mysqli_stmt::bindParam() /Applications/MAMP/htdocs/PHPproject/includes/functions.inc.php 第16行

谁能告诉我哪里出了问题


非常感谢

bind的第一个参数应该是变量的类型:

$stmt->bind_param("s", $album);
您还应该检查
execute()
的返回值,而不是
$stmt

$result = $stmt->execute();
if($result){
  echo "yes";
}
else {
  echo "no";
}

我还要说,每次插入内容时准备语句不是一个好主意。准备好的语句应该是类变量,如果您不在oop中,则应该是全局变量,因此您不会在每次调用函数时准备语句。只需编写一个函数
init()

$stmt->bind_param("s", $album);
您还应该检查
execute()
的返回值,而不是
$stmt

$result = $stmt->execute();
if($result){
  echo "yes";
}
else {
  echo "no";
}

我还要说,每次插入内容时准备语句不是一个好主意。准备好的语句应该是类变量,如果您不在oop中,则应该是全局变量,因此您不会在每次调用函数时准备语句。只需编写一个函数
init()
,它将准备好您将要使用的所有语句。

我们是否应该假设您的脚本输出
noooooo
?您正在使用google chrome吗?Google Chrome无法正确显示所有错误,因此请使用firefox。您还应该在phpthanks中启用错误输出,好的,我已经更新了帖子,以显示我运行函数时遇到的致命错误。我编辑了我的答案。在php.net网站bindParam中,当它是bind_param时,请查看正确的函数名。谢谢你的帮助。我们应该假设你的脚本输出
noooooo
?你在使用谷歌浏览器吗?Google Chrome无法正确显示所有错误,因此请使用firefox。您还应该在phpthanks中启用错误输出,好的,我已经更新了帖子,以显示我运行函数时遇到的致命错误。我编辑了我的答案。在php.net网站bindParam中,当它是bind_param时,请查看正确的函数名。谢谢你的帮助。谢谢你的建议,我似乎仍然无法让它运行,我已经检查了PDO是否安装在我的php.ini文件中,并且没有被注释掉。我已经编辑了我的帖子,以显示最新的函数和我收到的浏览器错误。谢谢你的建议,我似乎仍然无法让它运行,我已经检查过PDO是否安装在我的php.ini文件中,它没有被注释掉。我已经编辑了我的帖子,以显示我得到的最新函数和浏览器错误。