PHP,Ajax,Java表更新表

时间:2018-02-04 21:45:56

标签: php mysql pdo

我试图为我的应用程序更改,重定位和重新编写这几行,但是,同样的错误不断弹出。它是对数据库子句的更新,它正确地提取行信息,将它们输入到表单中进行编辑和正确显示。但是,在尝试更新它时会抛出此错误。

错误代码

  

PHP警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:参数未在第49行定义

似乎很容易找到,我理解它的含义。它是); (我在第二组代码中写的< -------错误行。)正在关闭执行功能。从新输入,一切正常,没有问题,没有显示错误,但是,这不起作用。我甚至回到了代码的创始人那里,看看他们是否可以提供帮助,但没有答案。

请帮忙,这是我为了完成这个而坚持的最后一部分。

主页代码(据我所知,工作正常。信息被拉,并且正确)

$(document).on('click', '.update', function(){
var id = $(this).attr("id");
$.ajax({
url:"fetch_single.php",
method:"POST",
data:{id:id},
dataType:"json",
success:function(data)
{
$('#userModal').modal('show');
$('#cust_firstname').val(data.cust_firstname);
$('#cust_lastname').val(data.cust_lastname);
$('#cust_address').val(data.cust_address);
$('#cust_city').val(data.cust_city);
$('#cust_state').val(data.cust_state);
$('#cust_zipcode').val(data.cust_zipcode);
$('#cust_tx').val(data.cust_tx);
$('#cust_email').val(data.cust_email);
$('.modal-title').text("Edit User");
$('#id').val(id);
$('#action').val("Edit");
$('#operation').val("Edit");
}
 })
});

这里出现了我的错误

if($_POST["operation"] == "Edit")
{

 $statement = $connection->prepare(
"UPDATE customer 
 SET cust_firstname = :cust_firstname, cust_lastname = :cust_lastname, 
 cust_address = :cust_address, cust_city = :cust_city, cust_state = 
 :cust_state, cust_zipcode = :cust_zipcode, cust_email = :cust_email 
 WHERE id = :id
 "
 );
 $result = $statement->execute(
  array(
 ':cust_firstname' => $_POST["cust_firstname"],
':cust_lastname' => $_POST["cust_lastname"],
':cust_address' => $_POST["cust_address"],
':cust_city' => $_POST["cust_city"],
':cust_state' => $_POST["cust_state"],
':cust_zipcode' => $_POST["cust_zipcode"],
':cust_tx' => $_POST["cust_tx"],
':cust_email' => $_POST["cust_email"],
)
);  **<----- ERROR LINE**
if(!empty($result))
{
 echo 'Data Updated';
}
else {
 echo 'Error: Data not updated';
 }

 }
 }

 ?>

错误代码

  

PHP警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:参数未在第49行的/home/r3home/public_html/mpitsolutions.info/db/customer/insert.php中定义

1 个答案:

答案 0 :(得分:1)

您正在预先添加的查询中添加更多参数。特别是这一行:

':cust_tx' => $_POST["cust_tx"],

在prepeard查询中不存在。因此,从执行查询的位置删除此行,或将cust_tx添加到预先编写的查询中。

除此之外,正如Magnus Eriksson指出的那样,你还需要添加:id - 参数,它在prepeared语句中定义。