PDOStatement::execute — รันคำสั่งที่เตรียมไว้ (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
บูล PDOStatement::execute ([ อาร์เรย์ $input_parameters ] )
ดำเนินการคำสั่งที่เตรียมไว้ หากคำสั่งที่เตรียมไว้มีเครื่องหมายพารามิเตอร์ คุณต้องเลือกหนึ่งในตัวเลือกต่อไปนี้:
เรียก PDOStatement::bindParam() เพื่อผูกตัวแปร PHP กับตัวทำเครื่องหมายพารามิเตอร์ ถ้ามี ให้ส่งค่าอินพุตและรับค่าเอาต์พุตโดยการเชื่อมโยงตัวแปรที่ผูกไว้กับตัวทำเครื่องหมายพารามิเตอร์
หรือส่งผ่านอาร์เรย์เป็นค่าพารามิเตอร์อินพุตเท่านั้น
input_parameters
อาร์เรย์ที่มีองค์ประกอบมากเท่ากับพารามิเตอร์ที่เชื่อมโยงกับคำสั่ง SQL ที่จะดำเนินการ ค่าทั้งหมดจะถือเป็น PDO::PARAM_STR
คุณไม่สามารถผูกค่าหลายค่าเข้ากับพารามิเตอร์ตัวเดียวได้ ตัวอย่างเช่น คุณไม่สามารถผูกค่าสองค่าเข้ากับพารามิเตอร์ที่มีชื่อเดียวในส่วนคำสั่ง IN()
ค่าที่ผูกไว้ต้องไม่เกินจำนวนที่ระบุ หากมีชื่อคีย์ใน input_parameters มากกว่าที่ระบุโดย PDO::prepare() SQL ที่เตรียมไว้ คำสั่งนี้จะล้มเหลวโดยมีข้อผิดพลาด
ส่งคืน TRUE เมื่อสำเร็จ หรือ FALSE เมื่อล้มเหลว
<?php/* ดำเนินการคำสั่งที่เตรียมไว้โดยการผูกตัวแปร PHP*/$แคลอรี่ = 150;$color = 'red';$sth = $dbh->prepare('เลือกชื่อ, สี, แคลอรี่จากผลไม้ WHERE แคลอรี่ < :แคลอรี่ และ color = :color');$sth->bindParam(':แคลอรี่', $แคลอรี่, PDO::PARAM_INT);$sth->bindParam(':color', $color, PDO::PARAM_STR, 12);$sth->ดำเนินการ();?>
<?php/* ดำเนินการคำสั่งที่เตรียมไว้โดยส่งผ่านอาร์เรย์ที่มีค่าที่แทรกไว้*/$แคลอรี่ = 150;$color = 'red';$sth = $dbh->prepare('เลือกชื่อ, สี, แคลอรี่ จากผลไม้ WHERE แคลอรี่ < :แคลอรี่ AND color = :สี');$sth->execute(array(':แคลอรี่' => $แคลอรี่, ':สี' => $สี));?>
<?php/* ดำเนินการคำสั่งที่เตรียมไว้โดยส่งผ่านอาร์เรย์ของค่าที่แทรก*/$แคลอรี่ = 150;$color = 'red';$sth = $dbh->prepare('SELECT name, colour, Calories FROM Fruit WHERE แคลอรี่ < ? AND color = ?');$sth->execute(array($แคลอรี่, $color));?>
<?php/* ดำเนินการคำสั่งที่เตรียมไว้โดยการผูกตัวแปร PHP*/$แคลอรี่ = 150;$color = 'red';$sth = $dbh->prepare('SELECT name, color, Calories FROM Fruit WHERE แคลอรี่ < ? AND สี = ?');$sth->bindParam(1, $แคลอรี่, PDO::PARAM_INT);$sth->bindParam(2, $สี, PDO::PARAM_STR, 12);$sth->ดำเนินการ();?>
<?php/* ดำเนินการคำสั่งที่เตรียมไว้ซึ่งมี IN clause โดยใช้ค่าของอาร์เรย์ */$params = array(1, 21, 63, 171);/* สร้างตัวยึดตำแหน่งที่เติมด้วยจำนวน params String ที่เท่ากัน */$place_holders = implode(',', array_fill(0, count($params), '?'));/* สำหรับ $params สำหรับแต่ละค่าในอาร์เรย์ คำสั่งที่ต้องเตรียมจะมีตัวยึดตำแหน่งที่ไม่มีชื่อเพียงพอ เมื่อดำเนินการคำสั่ง ค่าในอาร์เรย์ $params จะถูกผูกไว้กับตัวยึดตำแหน่งในคำสั่งที่เตรียมไว้ สิ่งนี้แตกต่างจากการใช้ PDOStatement::bindParam() เนื่องจากต้องใช้ตัวแปรอ้างอิง PDOStatement::execute() ทำหน้าที่เป็นทางเลือกในการผูกตามค่าเท่านั้น */$sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");$sth->execute($params);?>