P H P  V I E T  N A M  P O R T A L
Xin chào, Khách. Vui lòng đăng nhập hoặc đăng ký tài khoản.
Bạn đã quên email kích hoạt?






     Trang chủ | Download | Tự học PHP | Kho tư liệu | Diễn đàn
Trang: 1 [2]
  In  
Current Topic Rating: *****
You have not rated this topic. Select a rating:
Tác giảChủ đề: Làm việc với PDO (Php Data Objects)  (Đã đọc 42562 lần)
quangtin17
PHP Intermediate
*
Posts: 77


Xem hồ sơ Email
« Trả lời #15 on: April 05, 2008, 04:34:38 AM »

hihi, không biết pác admin có thể giúp mình được ko? có thể cho ví dụ cụ thể để so sánh và nêu lên sự hữu ích được ko? Cheesy thanks nhiều
Logged
cmxq
Administrator
PHP Intermediate
*****
Posts: 1330


Xem hồ sơ Email
« Trả lời #16 on: April 27, 2008, 09:43:37 AM »

Tớ đã có lần nói rồi mà, đại thể thì nó cũng giống như thao tác với MySQL, nhưng sử dụng PDO sẽ có một số ưu điểm:
- Hỗ trợ hoàn tòan hướng đối tượng.
- Hỗ trợ nhiều loại CSDL khác nhau (chứ không riêng với MySQL).
- Cho phép làm việc với nhiều loại CSDL khác nhau với cùng một cách thức sử dụng (tương tự với ADO).
- Tận dụng được các công cụ trên các CSDL khác nhau như: Stored Procedure (trên Oracle, SQL Server...)
« Last Edit: April 27, 2008, 09:52:17 AM bởi cmxq » Logged

Trở về phpvn.org
mygod
PHP Intermediate
*
Posts: 33



Xem hồ sơ Email
« Trả lời #17 on: May 12, 2008, 01:57:31 AM »

Em lang thang trên php.net thấy có đoạn này
Code:
<?php
try {
    
$dbh = new PDO('mysql:host=localhost;dbname=test'$user$pass);
    foreach(
$dbh->query('SELECT * from FOO') as $row) {
        
print_r($row);
    }
    
$dbh null;
} catch (
PDOException $e) {
    print 
"Error!: " $e->getMessage() . "<br/>";
    die();
}

$stmt $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value 'hello';
$stmt->bindParam(1$valuePDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT4000); 

// call the stored procedure
$stmt->execute();

print 
"procedure returned $value\n";
?>


theo e hiểu thì thằng sp_takes_string_returns_string(?) sẽ nhận vào tham số INOUT $value('hello') và trả về giá trị cũng trên $value.

Em không biết làm cách nào trong mysql có thể lấy giá trị trả về từ SP (đọc help thấy nó ko support lệnh return trong SP) Huh

sorry admin, em post nhầm (đáng lẽ trong topic mysql Tongue)
« Last Edit: May 12, 2008, 02:18:50 AM bởi mygod » Logged

Bút sa gà...đá
KenyLieou
Global Moderator
PHP Intermediate
*****
Posts: 908


Nothing's Impossible

kiensuy2000@hotmail.com
Xem hồ sơ Email
« Trả lời #18 on: May 12, 2008, 02:16:11 AM »

ko có trong php.net thì qua thèng mysql dạo 1 vòng ^^
http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html Smiley

Cheer
Logged

+ PHPVN Supporter or Spamer Cheesy 
+ Email: kenylieou@gmail.com. Please feel free to contact me
mygod
PHP Intermediate
*
Posts: 33



Xem hồ sơ Email
« Trả lời #19 on: May 12, 2008, 02:29:41 AM »

ko có trong php.net thì qua thèng mysql dạo 1 vòng ^^
http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html Smiley

Cheer

thnks 4 help!

sáng tới giờ e dạo 4,5 vòng rồi mà ko tìm thấy! Angry

SP của e:
Code:
CREATE DEFINER = 'root'@'localhost' PROCEDURE `sp_user`(IN xuser_id INTEGER(11), OUT xuser_name VARCHAR(255))
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
    select user_name into xuser_name from user where user_id=xuser_id;
END;

code php
Code:
<?php
$user
='root';
$pass='****';
try {
    
$dbh = new PDO('mysql:host=localhost;dbname=test'$user$pass);
    foreach(
$dbh->query('SELECT * from user') as $row) {
        echo 
$row[0], ': '$row[1], '<br>';
}
} catch (
PDOException $e) {
    print 
"Error!: " $e->getMessage() . "<br/>";
    die();
}

$stmt $dbh->prepare("call sp_user(?,?)");
$stmt->bindParam(1$id);
$stmt->bindParam(2$namePDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT255);

$id=1;
$stmt->execute();
echo 
"return $name";
//$name vẫn ko nhận được giá trị trả về từ SP
?>




search trên google thì nó lấy theo cách này:
Code:
$TM = mysql_query("Call Accounts_GetAllData(data)");
$TM2 = mysql_query('SELECT data');
$TM_X = mysql_fetch_array($TM);
$TM_W = mysql_fetch_array($TM2);
print_r(TM_W);
data là out



cho e hỏi thêm là: code của PDO package viết = ngôn ngữ nào? em down gói PDO_MYSQL-1.0.2 về thấy toàn file C,...Huh

thanks much!
« Last Edit: May 14, 2008, 09:18:10 PM bởi mygod » Logged

Bút sa gà...đá
pokemon5gam
PHP Starter
*
Posts: 5


Xem hồ sơ Email
« Trả lời #20 on: May 29, 2008, 06:51:35 AM »

Tất nhiên là viết = C rồi . Các thư viện của Php đều được viết bằng C hết .
Logged
tuananhasp
PHP Starter
*
Posts: 1


Xem hồ sơ
« Trả lời #21 on: April 22, 2011, 08:40:40 PM »

bạn thử xuất dữ liệu ra như sau:
$stmt->execute();
$return_string = $stmt->fetch();
echo 'Called stored procedure.
It returned: ', $return_string[0];
Logged
sontung0
PHP Starter
*
Posts: 3


Xem hồ sơ Email
« Trả lời #22 on: June 19, 2011, 04:20:16 AM »

cho mình hỏi
mình có áp dụng pdo như này

$dbh = new PDO('mysql:host=localhost;dbname=mvc''root''1');

$stmt $dbh->prepare("SELECT * FROM ?");
$stmt->bindParam(1$value);

$value 'posts';
$stmt->execute();

$result $stmt->fetchAll();
print_r($result);

tại sao nó không chạy nhỉ
Logged
KenyLieou
Global Moderator
PHP Intermediate
*****
Posts: 908


Nothing's Impossible

kiensuy2000@hotmail.com
Xem hồ sơ Email
« Trả lời #23 on: June 21, 2011, 01:07:11 AM »

cho mình hỏi
mình có áp dụng pdo như này

$dbh = new PDO('mysql:host=localhost;dbname=mvc''root''1');

$stmt $dbh->prepare("SELECT * FROM ?");
$stmt->bindParam(1$value);

$value 'posts';
$stmt->execute();

$result $stmt->fetchAll();
print_r($result);

tại sao nó không chạy nhỉ

nó bảo lỗi gì vậy ?
Logged

+ PHPVN Supporter or Spamer Cheesy 
+ Email: kenylieou@gmail.com. Please feel free to contact me
sunaroad
PHP Starter
*
Posts: 3


Xem hồ sơ
« Trả lời #24 on: October 07, 2011, 10:31:04 AM »

Mọi người cho mình hỏi làm sao dùng tiếng Việt với PDO
Logged
harry_truong
PHP Intermediate
*
Posts: 30


Xem hồ sơ Email
« Trả lời #25 on: October 28, 2011, 08:24:52 PM »

Nếu hiện nay mình đang sử dụng 1 loại CSDL thì có thể lướt qua phần này đúng không admin
Logged
sonnb
PHP Starter
*
Posts: 3


Xem hồ sơ
« Trả lời #26 on: November 08, 2011, 12:22:28 AM »

Quote from: quangtin17 link==544.msg4706#msg4706 =1207296858
cái hàm prepare mình ko cần dùng bindparam, mình có thể dùng str_replace được mà, ví dụ
str_replace(':name','adman',< string>), các bạn thấy thế nào
BindParam ngoài tác dụng speed up câu query còn có tác dụng hạn chế sql injection. Dùng str_replace như bạn thì ko những nhanh hơn mà lại còn chậm hơn vì còn phải xử lý (chưa tính trường hợp replace sai).
Logged
sonnb
PHP Starter
*
Posts: 3


Xem hồ sơ
« Trả lời #27 on: November 08, 2011, 12:24:07 AM »

cho mình hỏi
mình có áp dụng pdo như này

$dbh = new PDO('mysql:host=localhost;dbname=mvc''root''1');

$stmt $dbh->prepare("SELECT * FROM ?");
$stmt->bindParam(1$value);

$value 'posts';
$stmt->execute();

$result $stmt->fetchAll();
print_r($result);

tại sao nó không chạy nhỉ
Tất nhiên là không chạy rồi. Có ai đời lại bind xong mới khai báo đâu. Bạn khai báo $value trước khi Bind vào PDO chứ.
Logged
Trang: 1 [2]
  In  
 
Chuyển sang:  

Powered by SMF 1.1.15 | SMF © 2006-2007, Simple Machines . Modified by PHPVN Members