SQLSTATE[HY093]:更新数据库中的数据时参数号无效
SQLSTATE[HY093]: Invalid parameter number on updating data in db
我是编程新手。我希望有人能帮助我解决我的问题。我正在尝试更新我的数据,但此错误不断弹出,我不知道该怎么办。这是我的代码
function updatePromo($name, $imageLocation, $dateRelease, $date){
if(!isset($this->db))
return new Exception("Failed to update promo");
$sql = "UPDATE `promo` SET `name` = :name,
`image_location` = :image_location,
`date_release` = :date_release,
`date` = :date WHERE `id` = :id";
return $this->db->db_insert($sql, array(
'name'=>$name,
'image_location'=>$imageLocation,
'date_release'=>$dateRelease,
'date'=>$date
));
这是更新数据的代码
$db = new PROMO_DAO();
$name = $_POST['updateName'];
$dateRelease = strtotime($_POST['updateDate'])*1000;
$date = $_POST['updateDate'];
$temp_dir = getTempUploadDir();
// mysql inserting a new row
$result = $db->updatePromo($name, $temp_dir, $dateRelease, $date);
// check if row inserted or not
if ($result > 0) {
$newId = $db->getLastInsertedId($name);
$temp_target_file = $temp_dir . basename($_FILES["updateImage"]['name']);
$imageFileType = pathinfo($temp_target_file,PATHINFO_EXTENSION);
$newfilename = 'promo_' . $newId . '.' . $imageFileType;
uploadImage($_FILES["updateImage"], $newfilename);
$db->updateImageLocation($name, '/images/' . $newfilename);
$response["status"] = 1;
$response["message"] = "Promo updated successfully.";
} else {
throw new RuntimeException("Failed to update Promo: " . $name);
}
您缺少一个参数和冒号,将它们添加到插入调用中,如下所示
$sql = "UPDATE `promo` SET `name` = :name,
`image_location` = :image_location,
`date_release` = :date_release,
`date` = :date WHERE `id` = :id";
return $this->db->db_insert($sql, array(
':name'=>$name,
':image_location'=>$imageLocation,
':date_release'=>$dateRelease,
':date'=>$date,
':id'=>$id
));
在您的数组中,您没有在键中添加 :
,也没有传递 :id
参数,因为您在 WHERE
子句中使用它查询。
希望这能帮助您解决问题
我是编程新手。我希望有人能帮助我解决我的问题。我正在尝试更新我的数据,但此错误不断弹出,我不知道该怎么办。这是我的代码
function updatePromo($name, $imageLocation, $dateRelease, $date){
if(!isset($this->db))
return new Exception("Failed to update promo");
$sql = "UPDATE `promo` SET `name` = :name,
`image_location` = :image_location,
`date_release` = :date_release,
`date` = :date WHERE `id` = :id";
return $this->db->db_insert($sql, array(
'name'=>$name,
'image_location'=>$imageLocation,
'date_release'=>$dateRelease,
'date'=>$date
));
这是更新数据的代码
$db = new PROMO_DAO();
$name = $_POST['updateName'];
$dateRelease = strtotime($_POST['updateDate'])*1000;
$date = $_POST['updateDate'];
$temp_dir = getTempUploadDir();
// mysql inserting a new row
$result = $db->updatePromo($name, $temp_dir, $dateRelease, $date);
// check if row inserted or not
if ($result > 0) {
$newId = $db->getLastInsertedId($name);
$temp_target_file = $temp_dir . basename($_FILES["updateImage"]['name']);
$imageFileType = pathinfo($temp_target_file,PATHINFO_EXTENSION);
$newfilename = 'promo_' . $newId . '.' . $imageFileType;
uploadImage($_FILES["updateImage"], $newfilename);
$db->updateImageLocation($name, '/images/' . $newfilename);
$response["status"] = 1;
$response["message"] = "Promo updated successfully.";
} else {
throw new RuntimeException("Failed to update Promo: " . $name);
}
您缺少一个参数和冒号,将它们添加到插入调用中,如下所示
$sql = "UPDATE `promo` SET `name` = :name,
`image_location` = :image_location,
`date_release` = :date_release,
`date` = :date WHERE `id` = :id";
return $this->db->db_insert($sql, array(
':name'=>$name,
':image_location'=>$imageLocation,
':date_release'=>$dateRelease,
':date'=>$date,
':id'=>$id
));
在您的数组中,您没有在键中添加 :
,也没有传递 :id
参数,因为您在 WHERE
子句中使用它查询。
希望这能帮助您解决问题