所以,我和幾個朋友正在做這個項目,我們需要解決的一個問題是能夠更新數據。PHP PDO更新 - 預計參數和無效參數
免責聲明:我們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對象::執行():SQLSTATE [HY093]:無效的參數編號:綁定變量的數目不
IF我們用這個代替匹配的令牌數量:
$pdo->execute($query);
我們得到這個錯誤代碼:
警告: PDOStatement對象::執行()預計參數1是數組,字符串中
我們一直停留在這個相當長的一段時間現在給出對如何解決這一問題,因此任何幫助是非常appriciated沒有真正的線索。
注:我們使用的是形式,試圖執行此,並且形式如下所示:
<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>
你不需要傳遞任何參數來執行(),因爲你已經綁定了e參數使用bindParam()。這樣的調用$ pdo-> execute(); –
嘗試按照您的建議進行操作,但仍出現錯誤 「無效的參數編號:參數未定義」 –
確保您從$ _POST獲取所有值。錯誤提示您缺少一些參數。 –