我的代码出错了。
$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数据库中的DEFAULT和AUTO-INCREMENTING值,则会注意到以下内容。
除DATETIME字段外的所有字段在插入数据库时都会获取数组中最后一个元素的值。 即
ID = $ LastName FirstName = $ LastName MiddleName = $ LastName LastName = $ LastName RegisteredDate = $ RegisteredDate
使用bindValue时会输出相同的错误。
所以我最终使用
if($Statement->execute($Array_Bind)){
echo 'Successfully inserted into the database';
}else{
echo 'could not insert into database';
};
问题
建议使用execute($ array_Bind)假设在这种情况下所有数据都已使用bindParam或bindValue进行清理?
如果没有办法使用bindParam或bindValue和数组?
这是一个错误还是错误的编码架构。
答案 0 :(得分:-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,
答案 1 :(得分:-2)
您需要检查您的房屋。然后仔细检查。然后查看文档。