所以,我和几个 friend 正在做这个项目,我们需要解决的一个问题是能够更新数据。
免责声明:我们 PDO 连接有效,但由于明显的原因在代码片段中被删除
正在使用的 PHP 代码如下所示:
<?php
$pdo = new PDO();
$pdo->exec("set names utf8");
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$query= 'UPDATE HTSKund SET BranchU=:Branch, OrtU=:Ort, TypStalleU=:TypStalle, AdressU=:Adress, KontaktPersonU=:KontaktPerson, TelefonNummer1U = :TelefonNummer1, DatumAterkomstU=:DatumAterkomst, KommentarU=:Kommentar WHERE ForetagsNamnU=:ForetagsNamn;';
$pdo = $pdo->prepare($query);
$pdo->bindParam(':BranchU', $_POST['Branch'], PDO::PARAM_INT);
$pdo->bindParam(':OrtU', $_POST['Ort'], PDO::PARAM_INT);
$pdo->bindParam(':TypStalleU', $_POST['TypStalle'], PDO::PARAM_INT);
$pdo->bindParam(':AdressU', $_POST['Adress'], PDO::PARAM_INT);
$pdo->bindParam(':KontaktPersonU', $_POST['KontaktPerson'], PDO::PARAM_INT);
$pdo->bindParam(':TelefonNummer1U', $_POST['TelefonNummer1'], PDO::PARAM_INT);
$pdo->bindParam(':DatumAterkomstU', $_POST['DatumAterkomst'], PDO::PARAM_INT);
$pdo->bindParam(':KommentarU', $_POST['Kommentar'], PDO::PARAM_INT);
$pdo->bindParam(':ForetagsNamnU', $_POST['ForetagsNamn'], PDO::PARAM_INT);
$pdo->execute(array($query));
echo "Records were updated successfully."; ?>
中频我们正在使用这种方法:
$pdo->execute(array($query));
我们得到这个错误代码:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in
中频我们改用这个:
$pdo->execute($query);
我们得到这个错误代码:
Warning: PDOStatement::execute() expects parameter 1 to be array, string given in
我们已经在这个问题上停留了很长一段时间,并且不知道如何解决这个问题,所以任何帮助都非常受欢迎。
注意:我们正在使用表单来尝试执行此操作,表单如下所示:
<form action="KundSidaU.php" method="post">
Företag:
<select size='1' name='ForetagsNamnU'>
<?php
$pdo = new PDO();
$pdo->exec("set names utf8");
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
foreach($pdo->query('SELECT DISTINCT ForetagsNamn FROM HTSKund') as $row)
{
echo '<option value="'.$row['ForetagsNamn'].'">';
echo $row['ForetagsNamn'];
echo '</option>';
}
?>
</select><br>
Branch:
<select size='1' name='BranchU'>
<?php
$pdo = new PDO();
$pdo->exec("set names utf8");
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
foreach($pdo->query('SELECT DISTINCT Branch FROM HTSKund') as $row)
{
echo '<option value="'.$row['Branch'].'">';
echo $row['Branch'];
echo '</option>';
}
?>
</select><br>
Ort: <input type="text" name="OrtU"/><br>
Typ av ställe: <input type="text" name="TypStalleU"/><br>
Adress: <input type="text" name="AdressU"/><br>
KontaktPerson: <input type="text" name="KontaktPersonU"/><br>
TelefonNummer: <input type="text" name="TelefonNummer1U"/><br>
Återkomstdatum: <input type="text" name="DatumAterkomstU"placeholder='YYYY-MM-DD HH:MM'/><br>
Kommentar: <input type="text" name="KommentarU"/><br>
最佳答案
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in
您没有绑定(bind)您在查询中提供的任何占位符
BranchU=:Branch
在你的束缚中,你有
$pdo->bindParam(':BranchU', $_POST['Branch'], PDO::PARAM_INT);
请注意
:Branch
不等于 :BranchU
所以你需要删除所有 U
s 在 pindParam()
的末尾所以你的代码应该是:
<?php
$pdo = new PDO();
$pdo->exec("set names utf8");
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$query= 'UPDATE HTSKund SET BranchU=:Branch, OrtU=:Ort, TypStalleU=:TypStalle, AdressU=:Adress, KontaktPersonU=:KontaktPerson, TelefonNummer1U = :TelefonNummer1, DatumAterkomstU=:DatumAterkomst, KommentarU=:Kommentar WHERE ForetagsNamnU=:ForetagsNamn;';
$pdo = $pdo->prepare($query);
$pdo->bindParam(':Branch', $_POST['Branch'], PDO::PARAM_INT);
$pdo->bindParam(':Ort', $_POST['Ort'], PDO::PARAM_INT);
$pdo->bindParam(':TypStalle', $_POST['TypStalle'], PDO::PARAM_INT);
$pdo->bindParam(':Adress', $_POST['Adress'], PDO::PARAM_INT);
$pdo->bindParam(':KontaktPerson', $_POST['KontaktPerson'], PDO::PARAM_INT);
$pdo->bindParam(':TelefonNummer1', $_POST['TelefonNummer1'], PDO::PARAM_INT);
$pdo->bindParam(':DatumAterkomst', $_POST['DatumAterkomst'], PDO::PARAM_INT);
$pdo->bindParam(':Kommentar', $_POST['Kommentar'], PDO::PARAM_INT);
$pdo->bindParam(':ForetagsNamn', $_POST['ForetagsNamn'], PDO::PARAM_INT);
$pdo->execute();
echo "Records were updated successfully.";
?>
关于PHP PDO 更新 - 需要参数和无效的参数号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43341736/