คำถามติดแท็ก pdo

PDO (PHP Data Objects) เป็นเลเยอร์นามธรรมที่เข้าถึงข้อมูล (อินเทอร์เฟซ) สำหรับ PHP ใช้งานได้กับระบบฐานข้อมูลส่วนใหญ่

3
แบบสอบถามของ PDO เทียบกับการดำเนินการ
ทั้งสองทำสิ่งเดียวกันแตกต่างกันหรือไม่? มีความแตกต่างนอกเหนือจากการใช้prepareระหว่าง $sth = $db->query("SELECT * FROM table"); $result = $sth->fetchAll(); และ $sth = $db->prepare("SELECT * FROM table"); $sth->execute(); $result = $sth->fetchAll(); ?
129 php  pdo 

4
ความแตกต่างระหว่าง MySQL, MySQLi และ PDO คืออะไร? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ความแตกต่างระหว่าง MySQL, MySQLiและPDOคืออะไร? อันไหนที่เหมาะที่สุดที่จะใช้กับ PHP-MySQL?
128 php  mysql  pdo  mysqli 

10
MySQL ตรวจสอบว่ามีตารางอยู่หรือไม่โดยไม่มีข้อยกเว้น
วิธีใดคือวิธีที่ดีที่สุดในการตรวจสอบว่ามีตารางอยู่ใน MySQL หรือไม่ (ควรใช้ PDO ใน PHP) โดยไม่ต้องมีข้อยกเว้น ฉันไม่รู้สึกเหมือนกำลังแยกวิเคราะห์ผลลัพธ์ของ "SHOW TABLES LIKE" และอื่น ๆ ต้องมีแบบสอบถามบูลีนบ้างไหม?
123 php  mysql  pdo  database 

5
PDO ปิดการเชื่อมต่อ
เป็นคำถามที่ค่อนข้างง่ายเกี่ยวกับ PDO เมื่อเทียบกับ MySQLi ด้วย MySQLi เพื่อปิดการเชื่อมต่อคุณสามารถทำได้: $this->connection->close(); อย่างไรก็ตามด้วย PDO จะระบุว่าคุณเปิดการเชื่อมต่อโดยใช้: $this->connection = new PDO(); nullแต่เพื่อปิดการเชื่อมต่อที่คุณตั้งค่าให้ $this->connection = null; ถูกต้องหรือไม่และจะทำให้การเชื่อมต่อ PDO ฟรีหรือไม่ (ฉันรู้ว่ามันทำตามที่ตั้งค่าเป็นnull) ฉันหมายถึงกับ MySQLi คุณต้องเรียกใช้ฟังก์ชัน ( close) เพื่อปิดการเชื่อมต่อ PDO ง่ายพอ ๆ= nullกับการตัดการเชื่อมต่อหรือไม่? หรือมีฟังก์ชั่นปิดการเชื่อมต่อหรือไม่
121 php  pdo 

10
จะใช้วิธีการ bindValue ในประโยค LIMIT ได้อย่างไร
นี่คือภาพรวมของรหัสของฉัน: $fetchPictures = $PDO->prepare("SELECT * FROM pictures WHERE album = :albumId ORDER BY id ASC LIMIT :skip, :max"); $fetchPictures->bindValue(':albumId', $_GET['albumid'], PDO::PARAM_INT); if(isset($_GET['skip'])) { $fetchPictures->bindValue(':skip', trim($_GET['skip']), PDO::PARAM_INT); } else { $fetchPictures->bindValue(':skip', 0, PDO::PARAM_INT); } $fetchPictures->bindValue(':max', $max, PDO::PARAM_INT); $fetchPictures->execute() or die(print_r($fetchPictures->errorInfo())); $pictures = $fetchPictures->fetchAll(PDO::FETCH_ASSOC); ฉันเข้าใจ คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ ตรวจสอบคู่มือที่ตรงกับเวอร์ชันเซิร์ฟเวอร์ MySQL ของคุณสำหรับไวยากรณ์ที่เหมาะสมที่จะใช้ใกล้ '' …
117 php  mysql  sql  pdo  bindvalue 

7
PDO MySQL: ใช้ PDO :: ATTR_EMULATE_PREPARES หรือไม่?
นี่คือสิ่งที่ฉันได้อ่านเกี่ยวกับPDO::ATTR_EMULATE_PREPARES: PDO ของการเตรียมความพร้อมการแข่งขันจะดีกว่าสำหรับผลการดำเนินงานตั้งแต่ MySQL พื้นเมืองเตรียมทะลุแคชแบบสอบถาม ของ MySQL พื้นเมืองเตรียมจะดีกว่าสำหรับการรักษาความปลอดภัย (ป้องกัน SQL Injection) ของ MySQL พื้นเมืองเตรียมจะดีกว่าสำหรับการรายงานข้อผิดพลาด ฉันไม่รู้ว่าข้อความเหล่านี้เป็นจริงแค่ไหน ข้อกังวลที่สุดของฉันในการเลือกอินเทอร์เฟซ MySQL คือการป้องกัน SQL Injection ข้อกังวลประการที่สองคือประสิทธิภาพ ขณะนี้แอปพลิเคชันของฉันใช้ MySQLi ตามขั้นตอน (โดยไม่มีคำสั่งที่เตรียมไว้) และใช้แคชแบบสอบถามค่อนข้างน้อย แทบจะไม่นำคำสั่งที่เตรียมไว้มาใช้ซ้ำในคำขอเดียว ฉันเริ่มต้นการย้ายไปยัง PDO สำหรับพารามิเตอร์ที่ตั้งชื่อและความปลอดภัยของคำสั่งที่เตรียมไว้ ฉันใช้MySQL 5.1.61และPHP 5.3.2 ฉันควรPDO::ATTR_EMULATE_PREPARESเปิดใช้งานหรือไม่ มีวิธีใดบ้างที่จะมีทั้งประสิทธิภาพของแคชแบบสอบถามและความปลอดภัยของคำสั่งที่เตรียมไว้
117 php  mysql  pdo 

7
PHP PDO ส่งคืนแถวเดียว
อัปเดต 2: นี่เป็นวิธีที่ดีที่สุดที่จะได้รับหรือไม่? $DBH = new PDO( "connection string goes here" ); $STH = $DBH -> prepare( "select figure from table1" ); $STH -> execute(); $result = $STH -> fetch(); echo $result ["figure"]; $DBH = null; อัปเดต 1: ฉันรู้ว่าฉันสามารถเพิ่มขีด จำกัด ให้กับแบบสอบถาม sql ได้ แต่ฉันก็ต้องการกำจัด foreach loop ซึ่งฉันไม่ควรต้องการ คำถามเดิม: ฉันมีสคริปต์ต่อไปนี้ซึ่งเป็น IMO …
113 php  pdo 


4
ฉันสามารถผสม MySQL API ใน PHP ได้หรือไม่
ฉันได้ค้นหาเครือข่ายและจนถึงตอนนี้สิ่งที่ฉันเห็นคือคุณสามารถใช้mysql_และmysqli_รวมความหมาย: <?php $con=mysqli_connect("localhost", "root" ,"" ,"mysql"); if( mysqli_connect_errno( $con ) ) { echo "failed to connect"; }else{ echo "connected"; } mysql_close($con); echo "Done"; ?> หรือ <?php $con=mysql_connect("localhost", "root" ,"" ,"mysql"); if( mysqli_connect_errno( $con ) ) { echo "failed to connect"; }else{ echo "connected"; } mysqli_close($con); echo "Done"; ?> ถูกต้อง แต่เมื่อฉันใช้รหัสนี้สิ่งที่ฉันได้รับคือ: …
108 php  mysql  pdo  mysqli 

9
ฉันจะแทรกค่า NULL โดยใช้ PDO ได้อย่างไร
ฉันใช้รหัสนี้และฉันก็ไม่รู้สึกหงุดหงิด: try { $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'"); } catch(PDOException $e) { ... } $stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)'); $stmt->bindParam(':v1', PDO::PARAM_NULL); // --> Here's the problem PDO::PARAM_NULL, null, '', ทั้งหมดล้มเหลวและโยนข้อผิดพลาดนี้: ข้อผิดพลาดร้ายแรง : …
105 php  mysql  pdo  null  sql-insert 

6
การติดตั้งไดรเวอร์ PDO บนเซิร์ฟเวอร์ MySQL Linux
เมื่อไม่นานมานี้ฉันได้รับคำแนะนำให้เปลี่ยนรหัสของฉันไปใช้ PDO เพื่อกำหนดพารามิเตอร์การสืบค้นของฉันและบันทึก HTML ในฐานข้อมูลอย่างปลอดภัย นี่คือปัญหาหลัก: ฉันดูที่http://php.net/manual/en/ref.pdo-mysql.phpแล้วฉันไม่เข้าใจจริงๆว่าฉันควรวาง$ ./configure --with-pdo-mysqlสตริงนั้น... ไซต์ที่ฉันกำลังสร้างนั้นต้องใช้ PDO สำหรับหนึ่งเพจเท่านั้น ในขณะที่ฉันอาจพิจารณาเขียนใหม่ แต่ต้องใช้เวลาสักครู่และฉันต้องการให้หน้าต่างๆทำงานเร็ว ๆ นี้ดังนั้นฉันจึงไม่สามารถปิด MySQL ได้ทั้งหมด หากฉันติดตั้ง PDO ฉันจะยังใช้mysql_*ตัวจัดการได้หรือไม่ เซิร์ฟเวอร์ที่เป็นปัญหากำลังเรียกใช้ PHP เวอร์ชัน 5.4.6-1ubuntu1 และ Apache / 2.2.22 (Ubuntu) ฉันกำลังเรียกใช้ฐานข้อมูล phpMyAdmin ด้วยหากเป็นเรื่องสำคัญ
102 php  mysql  pdo  phpmyadmin  install 

7
รองรับ PDO สำหรับการสืบค้นหลายรายการ (PDO_MYSQL, PDO_MYSQLND)
ฉันรู้ว่า PDO ไม่สนับสนุนการดำเนินการหลายคำสั่งในคำสั่งเดียว ฉันใช้ Googleing และพบโพสต์สองสามรายการที่พูดถึง PDO_MYSQL และ PDO_MYSQLND PDO_MySQL เป็นแอปพลิเคชันที่อันตรายกว่าแอปพลิเคชัน MySQL ทั่วไปอื่น ๆ MySQL แบบดั้งเดิมอนุญาตให้ใช้แบบสอบถาม SQL เพียงชุดเดียว ใน PDO_MySQL ไม่มีข้อ จำกัด ดังกล่าว แต่คุณมีความเสี่ยงที่จะถูกแทรกด้วยแบบสอบถามหลายรายการ จาก: การป้องกัน SQL Injection โดยใช้ PDO และ Zend Framework (มิถุนายน 2553 โดย Julian) ดูเหมือนว่า PDO_MYSQL และ PDO_MYSQLND จะให้การสนับสนุนสำหรับการสืบค้นหลายรายการ แต่ฉันไม่สามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับพวกเขาได้ โครงการเหล่านี้ถูกยกเลิกหรือไม่ มีวิธีใดบ้างในการเรียกใช้แบบสอบถามหลายรายการโดยใช้ PDO
102 php  mysql  pdo 

2
ทำความสะอาดรหัสผ่านของผู้ใช้
ฉันจะหลีกเลี่ยงหรือล้างรหัสผ่านที่ผู้ใช้ให้มาก่อนที่จะแฮชและเก็บไว้ในฐานข้อมูลได้อย่างไร เมื่อนักพัฒนา PHP พิจารณาการแฮชรหัสผ่านของผู้ใช้เพื่อจุดประสงค์ด้านความปลอดภัยพวกเขามักจะคิดว่ารหัสผ่านเหล่านั้นเหมือนกับข้อมูลอื่น ๆ ที่ผู้ใช้ให้มา หัวข้อนี้มักเกิดขึ้นในคำถาม PHP ที่เกี่ยวข้องกับการจัดเก็บรหัสผ่าน นักพัฒนามักจะต้องการที่จะทำความสะอาดรหัสผ่านโดยใช้ฟังก์ชั่นเช่นescape_string()(ในการทำซ้ำต่างๆ), htmlspecialchars(), addslashes()และคนอื่น ๆ ก่อนที่จะ hashing มันและเก็บไว้ในฐานข้อมูล
98 php  sql  pdo  hash 

7
PDO mysql: จะรู้ได้อย่างไรว่าการแทรกสำเร็จ
ฉันใช้ PDO เพื่อแทรกบันทึก (mysql และ php) $stmt->bindParam(':field1', $field1, PDO::PARAM_STR); $stmt->bindParam(':field2', $field2, PDO::PARAM_STR); $stmt->execute(); มีวิธีใดที่จะทราบได้ว่าแทรกสำเร็จหรือไม่เช่นไม่ได้ใส่เรกคอร์ดเพราะซ้ำกัน แก้ไข: แน่นอนฉันสามารถดูฐานข้อมูลได้ แต่ฉันหมายถึงคำติชมแบบเป็นโปรแกรม
96 php  mysql  database  pdo 

4
วิธีตั้งค่าการเชื่อมต่อ PDO อย่างถูกต้อง
บางครั้งฉันเห็นคำถามเกี่ยวกับการเชื่อมต่อกับฐานข้อมูล คำตอบส่วนใหญ่ไม่ใช่วิธีที่ฉันทำหรือฉันอาจจะไม่ได้รับคำตอบที่ถูกต้อง อย่างไรก็ตาม; ฉันไม่เคยคิดเกี่ยวกับเรื่องนี้เพราะวิธีที่ฉันทำมันเหมาะกับฉัน แต่นี่เป็นความคิดที่บ้าคลั่ง บางทีฉันอาจจะทำผิดทั้งหมดและถ้าเป็นเช่นนั้น ฉันต้องการทราบวิธีการเชื่อมต่อกับฐานข้อมูล MySQL อย่างถูกต้องโดยใช้ PHP และ PDO และทำให้เข้าถึงได้ง่าย นี่คือวิธีที่ฉันทำ: ก่อนอื่นนี่คือโครงสร้างไฟล์ของฉัน(ถอดออก) : public_html/ * index.php * initialize/ -- load.initialize.php -- configure.php -- sessions.php index.php ที่ด้านบนสุดฉันมีrequire('initialize/load.initialize.php');ไฟล์. load.initialize.php # site configurations require('configure.php'); # connect to database require('root/somewhere/connect.php'); // this file is placed outside of public_html for better security. …
92 php  mysql  sql  class  pdo 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.