Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php准备语句| |语法错误或访问冲突:1064_Php_Mysql_Sql_Pdo_Prepared Statement - Fatal编程技术网

php准备语句| |语法错误或访问冲突:1064

php准备语句| |语法错误或访问冲突:1064,php,mysql,sql,pdo,prepared-statement,Php,Mysql,Sql,Pdo,Prepared Statement,下面的代码返回此错误(行号在括号[]中) 我已经在PHPMyAdmin中手动编辑了条目,建议的“PHP代码”如下所示: $sql = "UPDATE `riggingregister`.`register` SET `register` = \'100\', `location` = \'testing\', `type` = \'Chains - 4 leg\', `capacity` = \'10mm\', `length` = \'testing\', `qty` = \'testing\

下面的代码返回此错误(行号在括号[]中)

我已经在PHPMyAdmin中手动编辑了条目,建议的“PHP代码”如下所示:

$sql = "UPDATE `riggingregister`.`register` SET `register` = \'100\',
`location` = \'testing\', `type` = \'Chains - 4 leg\', `capacity` = \'10mm\',
`length` = \'testing\', `qty` = \'testing\', `serial` = \'testing\', 
`cert` = \'testing\', `lastinsp` = \'testing\', `inspby` = \'testing\',
`datein` = \'testing\', `dateout` = \'testing\', 
`status` = \'HOLD\', `notes` = \'EDITED!\' WHERE `register`.`id` = 1;";
但我不确定如何将其转化为我准备好的声明

我一直在阅读教程、手册和所有可能给我的问题,看不出哪里出了问题。希望有人能给我指出正确的方向

干杯

echo "the <b>CONFIRM CHANGES</b> button was pressed<br /><br />";

    $query = $dbh->prepare('UPDATE register SET register, location, type, capacity, length, qty, serial, cert, lastinsp, inspby, datein, dateout, status, notes VALUES ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? WHERE id = $id');
    $data = array($register, $location, $type, $capacity, $length, $qty, $serial, $cert, $lastinsp, $inspby, $datein, $dateout, $status, $notes);
    $query->execute($data);

    echo "Data has been written to the database!<br /><br />";
echo“确认更改按钮已按下

”; $query=$dbh->prepare('UPDATE register SET register,location,type,capacity,length,qty,serial,cert,lastinsp,inspby,datein,dateout,status,notes value?,,,,,,,,,,,,,,,其中id=$id'); $data=array($register、$location、$type、$capacity、$length、$qty、$serial、$cert、$lastinsp、$inspby、$datein、$dateout、$status、$notes); $query->execute($data); echo“数据已写入数据库!

”;
可能类似

echo "the <b>CONFIRM CHANGES</b> button was pressed<br /><br />";

$data = array(
    'register' => $register,
    'location' => $location,
    'type' => $type,
    'capacity' => $capacity,
    'length' => $length,
    'qty' => $qty,
    'serial' => $serial,
    'cert' => $cert,
    'lastinsp' => $lastinsp,
    'inspby' => $inspby,
    'datein' => $datein,
    'dateout' => $dateout,
    'status' => $status,
    'notes' => $notes
);

$fieldDetails = NULL;

foreach($data as $key=> $value) {
    $fieldDetails .= "`$key`=:$key,";
}

$fieldDetails = rtrim($fieldDetails, ',');

$dbh = $this->prepare("UPDATE register SET $fieldDetails WHERE id = :id");

foreach ($data as $key => $value) {
    $dbh->bindValue(":$key", $value);
}

$dbh->bindValue(":id", $id);

if($dbh->execute()) {

     echo "Data has been written to the database!<br /><br />";
}
echo“确认更改按钮已按下

”; $data=数组( '寄存器'=>$register, “位置”=>$location, 'type'=>$type, “容量”=>$capacity, “长度”=>$length, “数量”=>$qty, “序列号”=>$serial, “证书”=>$cert, 'lastinsp'=>$lastinsp, “inspby”=>$inspby, 'datein'=>$datein, “dateout”=>$dateout, “状态”=>$status, 'notes'=>$notes ); $fieldDetails=NULL; foreach($key=>$value形式的数据){ $fieldDetails.=“`$key`=:$key,”; } $fieldDetails=rtrim($fieldDetails,,'); $dbh=$this->prepare(“更新寄存器集$fieldDetails,其中id=:id”); foreach($key=>$value形式的数据){ $dbh->bindValue(“:$key”,$value); } $dbh->bindValue(“:id”,$id); 如果($dbh->execute()){ echo“数据已写入数据库!

”; }
您的
更新格式错误
您的查询仍然可以通过直接传递$id进行注入。将$id添加到$data数组的末尾

试一试


代码很难读懂。您只需将其粘贴到问题中,选择并按CTRL-K键即可。这将为您提供良好的编码格式。更新查询是什么?尽管添加了行号以便于阅读,但这正是我所做的。@ZachFlem您的更新查询看起来不正常?
echo "the <b>CONFIRM CHANGES</b> button was pressed<br /><br />";

$data = array(
    'register' => $register,
    'location' => $location,
    'type' => $type,
    'capacity' => $capacity,
    'length' => $length,
    'qty' => $qty,
    'serial' => $serial,
    'cert' => $cert,
    'lastinsp' => $lastinsp,
    'inspby' => $inspby,
    'datein' => $datein,
    'dateout' => $dateout,
    'status' => $status,
    'notes' => $notes
);

$fieldDetails = NULL;

foreach($data as $key=> $value) {
    $fieldDetails .= "`$key`=:$key,";
}

$fieldDetails = rtrim($fieldDetails, ',');

$dbh = $this->prepare("UPDATE register SET $fieldDetails WHERE id = :id");

foreach ($data as $key => $value) {
    $dbh->bindValue(":$key", $value);
}

$dbh->bindValue(":id", $id);

if($dbh->execute()) {

     echo "Data has been written to the database!<br /><br />";
}
$query = $dbh->prepare('UPDATE register SET register =?, location =?,... WHERE id = ?');
$data = array($register, $location, $type, $capacity, $length, $qty, $serial, $cert, $lastinsp, $inspby, $datein, $dateout, $status, $notes,$id)
$query->execute($data);