我想在表中添加一些字段,但是我收到了这个错误:
Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\GuildSite\Include\Database.php on line 69
这是我必须插入表格的功能: 我确实在foreach循环之前移动了$ stmt === false
public function myinsert($sqlInsert,$param)
{
$stmt = $this->_connection->prepare($sqlInsert) ;
if ($stmt === FALSE)
{
die($this->_connection->error);
}
echo 'Parameters number: ' . sizeof($param) ;
foreach ( $param as $key => $field )
{
$stmt->bind_param ( $key , $field ) ;
}
$result = $stmt->execute() ;
$stmt->close();
return $result ;
}
从包含表单的页面中,我有这些参数,这就是我调用函数的方式:
$param[':name'] =$_POST["personaName"];
$param[':email'] = $_POST["email"];
$param[':pass'] = $_POST['password'] ;
$sqlInsert = "INSERT INTO `new_member`(`persona_name`, `email`, `password`) "
. "VALUES (':name', ':email', ':pass');";
$db->myinsert($sqlInsert , $param) ;
值周围的$ sqlInsert no'中有一个小错误。这是分类
我做错了什么?
我在表格中插入新行后,从phpMyadmin复制了sql插件。
我确实试图运行执行
$result = $stmt->execute($param) ;
但它仍然不会在表格中插入任何字段。
这是我的数据库连接
public function __construct()
{
try
{
$this->_connection = new mysqli(DB_SERVER,DB_USER,DB_PASS,DB_NAME) ;
}
catch (Exception $e)
{
echo $e->errorMessage();
}
}
当我检查数组的大小时,我的大小为3
答案 0 :(得分:0)
您似乎使用了bind_param()的错误参数。您必须指定一个字符串以指示参数类型作为第一个参数。因此,您可以在运行时检索bind_param()
所需的数据类型首字母,如下所示:
$types = '';
foreach ( $param as $key => $field )
{
$types .= gettype($field)[0];
}
现在,它可以用作bind_param()
的第一个参数。
另外,仅查看文档,该函数似乎不允许命名参数,只允许索引参数。
因此,继续使用bind_param()
来执行查询似乎非常困难。
该功能不适合您的用例。
您可以使用PDO mysql接口和PDO::bindValue()来代替支持命名参数。