ช่วยหน่อยค่ะ หา error ไม่เจอจริง ๆ ค่ะ งมมาหลายชั่วโมงแล้ว
มือใหม่ค่ะ พยายามไล่หาแล้ว แต่หาไม่เจอก็ว่าใส่ค่าตรงกันหมดแล้วนะคะ
Code (PHP)
<?php
//ถ้ามีค่าส่งมาจากฟอร์ม
if(isset($_POST['Typebk'])
&& isset($_POST['datebk'])
&& isset($_POST['Numberbk'])
&& isset($_POST['Yearbk'])
&& isset($_POST['Sudbk'])
&& isset($_POST['NameFrom'])
&& isset($_POST['NameTo'])
&& isset($_POST['posFrom'])
&& isset($_POST['idmemFrom'])
&& isset($_POST['posTo'])
&& isset($_POST['idmemTo'])
&& isset($_POST['phonefrom'])
&& isset($_POST['phoneto'])
&& isset($_POST['nameby'])
&& isset($_POST['nameEdit'])
&& isset($_POST['dateEdit'])
//&& isset($_POST['bookID'])
){
//ไฟล์เชื่อมต่อฐานข้อมูล
require_once 'connects/connect.php';
//ประกาศตัวแปรรับค่าจากฟอร์ม
//$bookID = $_POST['bookID'];
$Typebk = $_POST['Typebk'];
$datebk = $_POST['datebk'];
$Numberbk = $_POST['Numberbk'];
$Yearbk = $_POST['Yearbk'];
$Sudbk = $_POST['Sudbk'];
$NameFrom = $_POST['NameFrom'];
$NameTo = $_POST['NameTo'];
$posFrom = $_POST['posFrom'];
$idmemFrom= $_POST['idmemFrom'];
$posTo = $_POST['posTo'];
$idmemTo = $_POST['idmemTo'];
$phonefrom = $_POST['phonefrom'];
$phoneto = $_POST['phoneto'];
$nameby = $_POST['nameby'];
$nameEdit = $_POST['nameEdit'];
$dateEdit = $_POST['dateEdit'];
//sql update
$stmt = $conn->prepare("UPDATE bookout_2565 SET Typebk=:Typebk, datebk=:datebk, Numberbk=:Numberbk, Yearbk=:Yearbk, Sudbk=:Sudbk, NameFrom=:NameFrom, NameTo=:NameTo, posFrom=:posFrom, idmemFrom=:idmemFrom, posTo=:posTo, idmemTo=:idmemTo, phonefrom=:phonefrom, phoneto=:phoneto, nameby=:nameby, nameEdit=:nameEdit, dateEdit=:dateEdit WHERE bookID=:bookID");
//$stmt->bindParam(':bookID', $bookID , PDO::PARAM_INT);
$stmt->bindParam(':Typebk', $Typebk , PDO::PARAM_STR);
$stmt->bindParam(':datebk', $datebk , PDO::PARAM_STR);
$stmt->bindParam(':Numberbk', $Numberbk , PDO::PARAM_STR);
$stmt->bindParam(':Yearbk', $Yearbk , PDO::PARAM_STR);
$stmt->bindParam(':Sudbk', $Sudbk , PDO::PARAM_STR);
$stmt->bindParam(':NameFrom', $NameFrom , PDO::PARAM_STR);
$stmt->bindParam(':NameTo', $NameTo , PDO::PARAM_STR);
$stmt->bindParam(':posFrom', $posFrom , PDO::PARAM_STR);
$stmt->bindParam(':idmemFrom', $idmemFrom , PDO::PARAM_STR);
$stmt->bindParam(':posTo', $posTo , PDO::PARAM_STR);
$stmt->bindParam(':idmemTo', $idmemTo , PDO::PARAM_STR);
$stmt->bindParam(':phonefrom', $phonefrom , PDO::PARAM_STR);
$stmt->bindParam(':phoneto', $phoneto , PDO::PARAM_STR);
$stmt->bindParam(':nameby', $nameby , PDO::PARAM_STR);
$stmt->bindParam(':nameEdit', $nameEdit , PDO::PARAM_STR);
$stmt->bindParam(':dateEdit', $dateEdit , PDO::PARAM_STR);
$stmt->execute();
// sweet alert
echo '
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css">';
if($stmt->rowCount() > 0){
echo '<script>
setTimeout(function() {
swal({
title: "แก้ไขข้อมูลสำเร็จ",
type: "success"
}, function() {
window.location = "afrom.php"; //หน้าที่ต้องการให้กระโดดไป
});
}, 1000);
</script>';
}else{
echo '<script>
setTimeout(function() {
swal({
title: "เกิดข้อผิดพลาด",
type: "error"
}, function() {
window.location = "afrom.php"; //หน้าที่ต้องการให้กระโดดไป
});
}, 1000);
</script>';
}
$conn = null; //close connect db
} //isset
?>
ข้อความ error ค่ะ
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\xampp\htdocs\bookout65\aformedit_db.php:62 Stack trace: #0 C:\xampp\htdocs\bookout65\aformedit_db.php(62): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\bookout65\aformedit_db.php on line 62Tag : PHP, MySQL, HTML, HTML5, jQuery, FuelPHP
ประวัติการแก้ไข 2021-12-30 14:02:28
Date :
2021-12-30 14:00:48
By :
sunpatoo
View :
1058
Reply :
4
ไม่รู้ว่าเกี่ยวกับการที่หนูปิดช่องด้วยหรือว่า หรือว่าอะไร ตอนนี้หน้ามืดเลยค่ะ
Date :
2021-12-30 14:19:04
By :
sunpatoo
error ที่บอกคือ จำนวน field ไม่เท่ากัน ไล่เช็คดู ชื่อ field กับ ข้อมูล ตรงกันไหม
ขาด bookid ที่ mark เอาไว้
ประวัติการแก้ไข 2021-12-30 14:31:07
Date :
2021-12-30 14:28:52
By :
Chaidhanan
อันนี้โค้ดเอาไว้ generate เวลามี placeholder เยอะๆแยะๆแล้วมึนพลาดแบบกรณีนี้
Code (PHP)
$string = 'UPDATE แบบที่ใช้ข้างบนน่ะแหละ; UPDATE bookout_2565 SET Typebk=:Typebk, datebk=:datebk, Numberbk=:Numberbk, ...';
preg_match_all('/(:[a-z0-9_]+)/im', $string, $matches);
if (isset($matches[0]) && is_array($matches[0])) {
foreach ($matches[0] as $item) {
echo '$stmt->bindValue(\'' . $item . '\', ' . str_replace(':', '$', $item) . ');<br>' . PHP_EOL;
}
}
มันจะสร้างตัวอย่างโค้ดแล้วเอาไปแต่งตัวแปรเอาอีกทีหนึ่ง
ตัวอย่างผลลัพธ์
Quote: $stmt->bindValue(':Typebk', $Typebk);
$stmt->bindValue(':datebk', $datebk);
$stmt->bindValue(':Numberbk', $Numberbk);
ประวัติการแก้ไข 2021-12-30 17:38:00
Date :
2021-12-30 17:36:58
By :
mr.v
จากที่ดู SQL มีคำสั่ง WHERE
ขาดส่วนของการ
$stmt->bindParam(':bookID', $bookID , PDO::PARAM_INT);
Date :
2021-12-30 23:09:30
By :
{Cyberman}
Load balance : Server 04