0

我一直收到此代码错误。

$Database = new Database('localhost','root','password','Db');    

$Statement = $Database->prepare("INSERT INTO User VALUES(:ID,:FirstName,:MiddleName:LastName,:RegisteredDate")

$Array_Bind = array(
'ID'=>$ID,
'FirstName'=>$FirstName,
'MIddeName'=>$MiddleName,
'LastName'=>$LastName
'RegisteredDate'=>$Date
)

foreach($Array_Bind AS $Key=>$value){
$Statement->bindParam(':' .$Key, $value)

}

if($Statement->execute()){
echo 'Successfully inserted into the database';


}else{
echo 'could not insert into database';
};

如果 $ID (PrimaryKey) 默认不是 MySQL 数据库中的 AUTO-INCREMENTING 值,请注意以下事项。

  1. 除 DATETIME 字段外的所有字段在插入数据库时​​获取数组中最后一个元素的值。IE

    ID = $LastName FirstName = $LastName MiddleName = $LastName LastName = $LastName RegisteredDate = $RegisteredDate

  2. 使用 bindValue 时也会输出相同的错误。

所以我最终使用

if($Statement->execute($Array_Bind)){
echo 'Successfully inserted into the database';


}else{
echo 'could not insert into database';
};

问题

  1. 建议使用 execute($array_Bind) 假设所有数据都已被清理,而不是在这种情况下使用 bindParam 或 bindValue?

  2. 如果没有,有没有办法使用 bindParam 或 bindValue 和数组?

  3. 这是一个错误还是错误的编码架构。

4

2 回答 2

-1

我注意到您在占位符名称中有错字。不知道这样能不能解决问题

$Statement = $Database->prepare("INSERT INTO User VALUES(:ID,:FirstName,:MiddleName:LastName,:RegisteredDate")

$Array_Bind = array(
'ID'=>$ID,
'FirstName'=>$FirstName,
'MIddeName'=>$MiddleName,
'LastName'=>$LastName
'RegisteredDate'=>$Date
)

您使用占位符MIddeName,但在您的查询中使用MiddleName

改变这个

'MIddeName'=>$MiddleName,

对此

'MiddleName'=>$MiddleName,
于 2014-04-01T08:03:13.960 回答
-2

您需要检查您的场所。然后仔细检查。然后检查文档。

  • 使用 bindParam 它不是错误,而是必不可少的功能。
  • 使用 bindValue 它永远不会发生
  • 当然,将数组传递给 execute() 是首选,因为与其他方法相比,整体的完整性和代码量。
于 2014-03-31T05:09:44.730 回答