PDA

View Full Version : Không dùng được Store Procedure trong PHP



moihocIT
13-02-2010, 01:45
hix, sao mình dùng đoạn code này nhưng sao không lấy được dữ liệu

<?php
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('trial', $conn);
$row = mysql_fetch_array(mysql_query('CALL selectAll()'));
?>

Mình đã dùng command line để chạy thử procedure trong mysql và ra kết quả đúng. Nhưng tại sao php lại hiển thị lỗi "PROCEDURE trial.selectAll can't return a result set in the given context"
Ai biết chỉ giùm mình cái.
(Nếu dùng query thông thừong như: mysql_query("Select * from mytable"); thì vẫn truy vấn được dữ liệu bình thường, chỉ riêng có store procedure là không được).

kenphan19
13-02-2010, 08:42
ít nhất cũng phải gởi cái đoạn sql cho người ta xem chớ ! nói thế biết đường quái gì mà trả lời ...

moihocIT
13-02-2010, 09:06
sax, mình đã nói quá rõ ràng rồi là đoạn sql không có lỗi vì mình đã test bằng các chương trình mysql query và hiển thị kết quả đúng, còn nếu bạn muốn xem đoạn sql thì đây:
DELIMITER $$

DROP PROCEDURE IF EXISTS `selectAll` $$
CREATE DEFINER=`root`@`%` PROCEDURE `selectAll`()
BEGIN
SELECT * FROM mytable;
END $$

DELIMITER ;

pcdinh
13-02-2010, 15:32
Để dùng SP trong libmysql thì bạn cần chỉ định client flag là 131072 hay 65536 cho mysql_connect

VD:
mysql_connect($host, $username, $password, false, 65536)

moihocIT
14-02-2010, 08:56
Để dùng SP trong libmysql thì bạn cần chỉ định client flag là 131072 hay 65536 cho mysql_connect

VD:
mysql_connect($host, $username, $password, false, 65536)

Chính xác, mình đã tìm ra được cách rồi, vào đây mới gặp bạn trả lời, giá bạn trả lời sớm hơn tí thì mình khỏe rồi.
Dù sao cũng thanks nha.

Tại mình thường dùng bộ cài apache trên windows nên dùng Store Pro bình thừong, nay mình chuyển qua dùng trên Linux nên mới gặp lỗi.