所以,我和几个朋友在做这个项目,我们需要解决的一个问题就是能够更新数据。
免责声明:我们的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."; ?>
IF 我们正在使用此方法:
$pdo->execute(array($query));
我们收到此错误代码:
警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:绑定变量数与
中的令牌数不匹配
IF 我们正在使用此代码:
$pdo->execute($query);
我们收到此错误代码:
警告:PDOStatement :: execute()要求参数1为数组,字符串在
中给出
我们已经坚持了很长一段时间并且没有真正的线索如何解决这个问题,所以任何帮助都是高度关注的。
注意:我们正在使用表单来尝试执行此操作,表单如下所示:
<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>
答案 0 :(得分:0)
警告:PDOStatement :: execute():SQLSTATE [HY093]:参数无效 number:绑定变量的数量与
中的标记数不匹配
您没有绑定查询中提供的任何占位符
BranchU=:Branch
在你的绑定中你有
$pdo->bindParam(':BranchU', $_POST['Branch'], PDO::PARAM_INT);
请注意:Branch
不等于:BranchU
,因此您需要删除U
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.";
?>