mysqli更新查询未捕获的异常

时间:2018-10-28 16:50:13

标签: php mysqli

我正在尝试使用以下代码更新数据库中的数据:

<?php

error_reporting(E_ALL | E_STRICT | E_NOTICE); 
ini_set('display_errors', 1);

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

require("../db_connect.php");

if ($_GET['action'] == 'insert')

{

$query = "INSERT INTO tblfatture_2019 (id_booking, IdPaese, IdCodice, CodiceFiscale, Denominazione, Cognome, Nome, Indirizzo, NumeroCivico, CAP, Comune, Provincia, Nazione, payment_method, date_fattura, pre_paid, CodiceDestinatario, PECDestinatario) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = mysqli_prepare($con, $query);

$var1 = $_GET['id_booking'];
$var2 = $_GET['IdPaese'];
$var3 = $_GET['IdCodice'];
$var4 = $_GET['CodiceFiscale'];
$var5 = $_GET['Denominazione'];
$var6 = $_GET['Cognome'];
$var7 = $_GET['Nome'];
$var8 = $_GET['Indirizzo'];
$var9 = $_GET['NumeroCivico'];
$var10 = $_GET['CAP'];
$var11 = $_GET['Comune'];
$var12 = $_GET['Provincia'];
$var13 = $_GET['Nazione'];
$var14 = $_GET['payment_method'];
$var15 = $_GET['date_fattura'];
$var16 = $_GET['pre_paid'];
$var17 = $_GET['CodiceDestinatario'];
$var18 = $_GET['PECDestinatario'];

mysqli_stmt_bind_param($stmt,"issssssssssssssdss", $var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10, $var11, $var12, $var13, $var14, $var15, $var16, $var17, $var18);

mysqli_stmt_execute($stmt);

mysqli_stmt_close($stmt);

}

else if ($_GET['action'] == 'delete') 

{

$val1 = $_GET['id_fattura'];

$query = "DELETE FROM tblfatture_2019 WHERE id_fattura = ?";

$stmt = mysqli_prepare($con, $query);

mysqli_stmt_bind_param($stmt,"i", $val1);

mysqli_stmt_execute($stmt);

mysqli_stmt_close($stmt);   


}

else

{

$query = "UPDATE tblfatture_2019 SET id_booking=?, IdPaese=?, IdCodice=?, CodiceFiscale=?, Denominazione=?, Cognome=?, Nome=?, Indirizzo=?, NumeroCivico=?, CAP=?, Comune=?, Provincia=?, Nazione=?, payment_method=?, date_fattura=?, pre_paid=?, CodiceDestinatario=?, PECDestinatario=? WHERE id_fattura=?";
$stmt = mysqli_prepare($con, $query);

$var1 = $_GET['id_booking'];
$var2 = $_GET['IdPaese'];
$var3 = $_GET['IdCodice'];
$var4 = $_GET['CodiceFiscale'];
$var5 = $_GET['Denominazione'];
$var6 = $_GET['Cognome'];
$var7 = $_GET['Nome'];
$var8 = $_GET['Indirizzo'];
$var9 = $_GET['NumeroCivico'];
$var10 = $_GET['CAP'];
$var11 = $_GET['Comune'];
$var12 = $_GET['Provincia'];
$var13 = $_GET['Nazione'];
$var14 = $_GET['payment_method'];
$var15 = $_GET['date_fattura'];
$var16 = $_GET['pre_paid'];
$var17 = $_GET['CodiceDestinatario'];
$var18 = $_GET['PECDestinatario'];
$val19 = $_GET['id_fattura'];

mysqli_stmt_bind_param($stmt,'issssssssssssssdssi', $var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10, $var11, $var12, $var13, $var14, $var15, $var16, $var17, $var18, $var19);

mysqli_stmt_execute($stmt);

mysqli_stmt_affected_rows($stmt);

mysqli_stmt_close($stmt);

}

mysqli_close($con);

?>

但是我遇到了错误,最新的错误是:

我已经尝试调试了几个小时,无法理解为什么相关的insert和'delete'语句像超级按钮以及其他几个{{1}一样工作时,更新查询不起作用}我正在使用的语句。

我一直试图将表名和列名放在'和'标记之间,但这无济于事。

预先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您已经使用以下未完成的查询调用数据库:

 if (!$con->query($query)) {
    echo "query failed: (" . $con->errno . ") " . $con->error;
 }

尝试将其删除。 mysqli_stmt_execute($stmt);已在稍后执行查询,因此甚至不需要这样做。

仔细阅读文档中给出的示例:http://php.net/manual/en/mysqli.prepare.php

答案 1 :(得分:0)

找到了!

拼写错误$ val19 = $ _GET ['id_fattura'];而不是$ var19 = $ _GET ['id_fattura'];这让我很忙,使我疯狂了近一个星期...