PHP中的更新表错误
我正在一个网站上工作,并制作了一个表格,您可以在其中添加车辆。现在我创建了一个表单,您应该可以在其中编辑它们,但当我按下edit vehicle时,它会显示我的默认错误消息 这是一个很好的例子 现在我需要你的帮助。我不知道问题出在哪里,但我认为这与更新查询有关PHP中的更新表错误,php,html,mysql,pdo,Php,Html,Mysql,Pdo,我正在一个网站上工作,并制作了一个表格,您可以在其中添加车辆。现在我创建了一个表单,您应该可以在其中编辑它们,但当我按下edit vehicle时,它会显示我的默认错误消息 这是一个很好的例子 现在我需要你的帮助。我不知道问题出在哪里,但我认为这与更新查询有关 $showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll $pdo = new PDO('mysql:host=loc
$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll
$pdo = new PDO('mysql:host=localhost;dbname=', '', '');
if(isset($_GET['bearbeiten'])) {
$error = false;
$EKNR = $_POST['EKNR'];
$EKDatum = $_POST['EK-Datum'];
$RGNummer = $_POST['RG-Nummer'];
$Marke = $_POST['Marke'];
$Modell = $_POST['Modell'];
$EZ = $_POST['EZ'];
$MotorNummer = $_POST['Motornummer'];
$Fin = $_POST['FIN'];
$KM = $_POST['KM'];
$VK = $_POST['VK'];
$EKBrutto = $_POST['EK-Brutto'];
$EKNetto = $_POST['EK-Netto'];
$VKDatum = $_POST['Verkaufsdatum'];
$Lack = $_POST['Farbe'];
//Keine Fehler, wir können den Nutzer registrieren
if(!$error) {
$statement = $pdo->prepare("UPDATE `Fahrzeugverkauf` SET `EKNR`=[$EKNR],`EKDatum`=[$EKDatum],`RGNummer`=[$RGNummer],`Marke`=[$Marke],`Modell`=[$Modell],`EZ`=[$EZ],`MotorNr`=[$MotorNummer],`FIN`=[$Fin],`KM`=[$KM],`VK`=[$VK],`EKBrutto`=[$EKBrutto],`EKNetto`=[$EKNetto],`Farbe`=[$Lack],`VKDatum`=[$VKDatum] WHERE EKNR = $id");
$result = $statement->execute(array('EKNR' => '$EKNR', 'EKDatum' => '$EKDatum', 'RGNummer' => '$RGNummer', 'Marke' => '$Marke', 'Modell' => '$Modell', 'EZ' => '$EZ', 'MotorNr' => '$MotorNummer', 'FIN' => '$Fin', 'KM' => '$KM', 'VK' => '$VK', 'EKBrutto' => '$EKBrutto', 'EKNetto' => '$EKNetto', 'Farbe' => '$Lack', 'VKDatum' => '$VKDatum'));
if($result) {
echo 'Das Fahrzeug wurde erfolgreich hinzugefügt.';
$showFormular = false;
} else {
echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>'
;
$showFormular=true//变量ob das注册表RungsFormular anezeigt werden soll
$pdo=newPDO('mysql:host=localhost;dbname=','');
如果(isset($_GET['bearbeiten'])){
$error=false;
$EKNR=$_POST['EKNR'];
$EKDatam=$_POST['EK-Datum'];
$RGNummer=$_POST['RG-Nummer'];
$Marke=$_POST['Marke'];
$Modell=$_POST['Modell'];
$EZ=$_POST['EZ'];
$MotorNummer=$_POST['MotorNummer'];
$Fin=$_POST['Fin'];
$KM=$_POST['KM'];
$VK=$_POST['VK'];
$EKBUTO=$_POST['EK-Brutto'];
$EKNetto=$_POST['EK-Netto'];
$VKDatum=$_POST['Verkaufsdatum'];
$Lack=$_POST['Farbe'];
//Keine Fehler,können den Nutzer registrieren先生
如果(!$error){
$statement=$pdo->prepare(“更新`Fahrzeugverkauf`SET`EKNR`=[$EKNR],`ekdatam`=[$ekdatam],`rgnumer`=[$rgnumer],`Marke`=[$Marke],`model`=[$model],`EZ`=[$EZ],`MotorNr`=[$motornumer],`FIN`=[$FIN],`KM`=[$KM],`k`=[$VK],`brutto`=[$brutekto],`netto`=[$brutekto],`netto`=[$vkd],`netto],`netto`=$vkd],$vkd];其中,$vkd;
$result=$statement->execute(数组('EKNR'=>'$EKNR','ekdatam'=>'$ekdatam','rgnumer'=>'$rgnumer','Marke'=>'$Marke','Modell'=>'$model','EZ'=>'$EZ','MotorNr'=>'$MotorNummer','FIN'=>'$FIN'=>''KM','VK'=>''$VK'=>''VK','EKBrutto','EKBrutto','EKNetto'=>'>''''''>''''''''''''''''$EKNetto','ekneto'>'''>'''';
如果($结果){
回音“Fahrzeug wurde erfolgreich hinzugefügt.”;
$showFormular=false;
}否则{
回音“我是阿布佩切人,我是费勒·奥夫盖特人”
;
准备好的语句对参数有不同的SQL语法。使用:EKNR
代替[$EKNR]
然后在执行它时,在数组中传递参数:array(':EKNR'=>$EKNR,
)
SQL语句可以包含零个或多个命名(:name)或问题
标记(?)将替换实值的参数标记
当语句执行时
更新
您的代码中有几个错误:
'$Modell'
将保存文本值“$Model1”,而不是存储在$Modell
变量中的值`MotorNr` = :MotorNummer,
但您要传递一个参数:
':MotorNr' => $MotorNummer,
:MotorNr
必须替换为:motornumer
。有几个类似的错误。请全部修复EKNR = $id
将其替换为:
EKNR = :id
并将一个额外参数传递到execute:
':id' => $id
SET `EKNR`=:EKNR
据我所知,EKNR
是记录的id。无需保存,它将保持不变在要传递以执行的数组中,删除数组中值周围的单引号
$result = $statement->execute(array(
':EKNR' => $EKNR ,
':EKDatum' => $EKDatum ,
':RGNummer' => $RGNummer ,
':Marke' => $Marke ,
':Modell' => $Modell ,
':EZ' => $EZ ,
':MotorNr' => $MotorNummer ,
':FIN' => $Fin ,
':KM' => $KM ,
':VK' => $VK ,
':EKBrutto' => $EKBrutto ,
':EKNetto' => $EKNetto ,
':Farbe' => $Lack ,
':VKDatum' => $VKDatum ,
));
已解决代码:
<?php
function updater($value,$value2,$value3,$value4,$value5,$value6,$value7,$value8,$value9,$value10,$value11,$value12,$value13,$value14,$value15,$value16,$value17,$value18){
// Create connection
$conn = new mysqli( 'localhost' , 'user' , 'pass' ,'db_name' );
$value =mysqli_real_escape_string($conn,$value);
$value2 =mysqli_real_escape_string($conn,$value2);
$value3 =mysqli_real_escape_string($conn,$value3);
$value4 =mysqli_real_escape_string($conn,$value4);
$value5 =mysqli_real_escape_string($conn,$value5);
$value6 =mysqli_real_escape_string($conn,$value6);
$value7 =mysqli_real_escape_string($conn,$value7);
$value8 =mysqli_real_escape_string($conn,$value8);
$value9 =mysqli_real_escape_string($conn,$value9);
$value10 =mysqli_real_escape_string($conn,$value10);
$value11 =mysqli_real_escape_string($conn,$value11);
$value12 =mysqli_real_escape_string($conn,$value12);
$value13 =mysqli_real_escape_string($conn,$value13);
$value14 =mysqli_real_escape_string($conn,$value14);
$value15 =mysqli_real_escape_string($conn,$value15);
$value16 =mysqli_real_escape_string($conn,$value16);
$value17 =mysqli_real_escape_string($conn,$value17);
$value18 =mysqli_real_escape_string($conn,$value18);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE Fahrzeugverkauf SET EKNR='{$value}', EKDatum='{$value3}' , RGNummer='{$value4}' , Marke='{$value5}' , Modell='{$value6}' , Farbe='{$value7}', VKNummer='{$value8}', EZ='{$value9}', FIN='{$value10}', KM='{$value11}', VK='{$value12}', EKBrutto='{$value13}', EKNetto='{$value14}', VKDatum='{$value15}', MotorNr='{$value16}', Status='{$value17}', Anmerkung='{$value18}' WHERE EKNR='{$value2}'";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
}
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$value = $_POST['EKNR'];
$value2 = $_POST['EKNR2'];
$value3 = $_POST['EK-Datum'];
$value4 = $_POST['RG-Nummer'];
$value5 = $_POST['Marke'];
$value6 = $_POST['Modell'];
$value7 = $_POST['Farbe'];
$value8 = $_POST['VKnummer'];
$value9 = $_POST['EZ'];
$value10 = $_POST['FIN'];
$value11 = $_POST['KM'];
$value12 = $_POST['VK'];
$value13 = $_POST['EK-Brutto'];
$value14 = $_POST['EK-Netto'];
$value15 = $_POST['Verkaufsdatum'];
$value16 = $_POST['Motornummer'];
$value17 = $_POST['selektion'];
$value18 = $_POST['anmerkung'];
updater($value,$value2,$value3,$value4,$value5,$value6,$value7,$value8,$value9,$value10,$value11,$value12,$value13,$value14,$value15,$value16,$value17,$value18);
}
?>
我像你写的那样尝试了,但现在输出了另一个错误:警告:PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:参数未在第134行的/volume1/web/34/fahrzeuge_bearbeiten.php中定义aufgetreten@MaxBogatec请更新您的问题,并向我们展示您编写的代码。不需要表单代码。更新后,仍然不知道出了什么问题……@MaxBogatec-Answer-Updated.@halfer-Thank you.updated,仍然无法工作!在检索POST值和查询中使用的变量名称之间存在两个不匹配的变量名称。您在执行中使用“:FIN”,但在查询中使用:FIN,因此这些变量名称不匹配。您在执行中也使用:Farbe,但在查询中使用:lock,这些变量名称不匹配。请更正这两个名称,然后查看是否匹配gs工作。在Antwort中的Bite Beantwort deine Frage和markiere diese Antwort dann als akzeptiert。Bite editiere die Antwort nicht in die Frage hinein!从堆栈溢出中获得最佳结果的专业提示:(a)避免在您的化身中出现明显的攻击性消息;(b)如果有人花了很多精力来帮助你,不要对代码进行更改(例如PDO到mysqli),这会使他们的所有努力无效;(c)如果有人帮助你,要比“仍然不起作用”更详细,否则就很难知道如何进一步帮助您。现在通常认为使用参数绑定而不是转义更安全,因为存在一些涉及扩展字符集的边缘大小写注入攻击。好消息是MySQLi直接支持参数绑定。