我问了几个问题,但没有人帮忙。
致命错误:在中的布尔值上调用成员函数bind_param()-
我在PDO中使用PHP5和mySql:
连接和选择工作正常,但插入不想工作
这就是我的功能:
function AddNewUser($nickname, $email)
{
ini_set('display_errors', 1); //DELETE ME
ini_set('expose_php', 1); //DELETE ME
$pdo = EstablishDBCon();
echo "Subscribe user..<br/>";
$sql = "INSERT INTO db.table (nickname, email, insertdate, updatedate) VALUES (:nickname, :email, :insertdate, :updatedate)";
try {
$stmt = $pdo->prepare($sql); //Error at this line
//id?
$stmt->bindParam(':nickname', $nickname, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':insertdate', date("Y-m-d H:i:s"), PDO::PARAM_STR);
$stmt->bindParam(':updatedate', null, PDO::PARAM_NULL);
$stmt->exeute();
CloseDBCon($pdo);
echo "Subscribed!<br/>";
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
数据库模式是:
id(int not null auto_inc)|昵称(varchar not null)|电子邮件(varchar not null)| insertdate(datetime)| updatedatedate(datetime)
我是新来的PHP,我不明白这种类型的错误。我标记了代码中抛出错误的一行:
$stmt = $pdo->prepare($sql); //Error at this line
有人能帮我吗?
提前谢谢!
//编辑:Connection aka db_Connection.php:
<?php
echo 'Establishing MySQL Connection<br/>';
$pdo = null;
$dsn = 'mysql: host=xx; dbname=xx';
$dbUser = 'xx';
$pw = 'xx';
try {
$pdo = new PDO($dsn, $dbUser, $pw);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'Connection established.<br/>';
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
return $pdo;
?>
以下是已建立的DBCON函数:
function EstablishDBCon()
{
$pdo = include_once 'db_connection.php';
return $pdo;
}
问题出在函数buildedbcon()
中,该函数要求include\u once
语句返回一个值,就像包含的文件的内容是函数一样。
function EstablishDBCon()
{
$pdo = include_once 'db_connection.php';
return $pdo;
}
但这不是include_once
的工作方式:
如果文件中的代码已经包含,则不会再次包含,并且include\u once
返回TRUE
。
这就是为什么在$pdo
变量中使用TRUE
(布尔值)的原因。
在任何情况下,这种构造都会使代码很难遵循。我建议只使用include
和friends将自包含的PHP函数组合在一起,或者将HTML页面的一部分嵌入到另一个页面中。
调用boolean上的成员函数
在本例中,表示$pdo
不是对象,而是布尔值。因此,与数据库资源相反,buildedbcon()
很可能在成功时返回true,否则返回false。再次检查该功能上的文档。这里有一个链接,指向您需要的一些关于PDO的相关文档。
重用函数的最佳方法是将其放在include文件中,然后将其包含在您需要的每个文件的顶部。因此,在db_connection.php
中,创建函数:
function EstablishDBCon()
{
$pdo = false;
try{
// Put your PDO creation here
} catch (Exception $e) {
// Logging here is a good idea
}
return $pdo;
}
现在,您可以在任何需要的地方使用该功能。确保始终确保$pdo!==false
在使用它之前,请确保您的连接没有失败。
我正忙于从DB获取设置的函数,突然,我遇到了以下错误: 通常,这意味着我正在从不存在的表和东西中选择东西。但在这种情况下,我不是... 下面是getSting函数:
index.php 索引文件上有一个错误: 致命错误:调用第4行布尔值上的成员函数count()。
我试图了解PDO的来龙去脉,但我却走进了这堵砖墙。 我目前的PDO课程如下: 我有其余的函数,但对于这个错误,我认为没有必要向您展示其余的函数。 然后我这样调用函数: 我得到了以下错误:致命错误:在null上调用成员函数准备(),当我调用准备函数时会发生这种情况。知道为什么会发生这种情况以及我如何解决这个问题吗?
密码 错误 致命错误:调用第26行C:\xampp\htdocs\create.php中布尔值的成员函数bind_param()
这是我的函数,我在这里坐了很长时间,试图找出什么不起作用,它说它在$stmt2的行上- 如果我放一个$stmt2-
试图创建一个登录屏幕,我得到一个错误 致命错误:在第19行的C:\xampp\htdocs\login\class\Mysql.php中,对非对象调用成员函数准备() Constants.php