php执行 存储过程返回空,PHP-存储过程返回空结果

下面是我的存储过程:

DELIMITER $$

--

-- Procedures

--

DROP PROCEDURE IF EXISTS `checkLogin`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `checkLogin`(IN `uname` VARCHAR(255), IN `pwd` VARCHAR(255))

BEGIN

SELECT a.id, a.role_id, b.name FROM userTable as a

LEFT JOIN roleTable as b on b.id = a.role_id

WHERE a.username = uname AND password = pwd;

END$$

DELIMITER ;

下面是我的执行代码:

$stmt = $this->dbCon->prepare("CALL checkLogin(?, ?)");

$stmt->bindParam(1, $email, PDO::PARAM_STR, 4000);

$stmt->bindParam(2, $password, PDO::PARAM_STR, 4000);

// call the stored procedure

$stmt->execute();

//var_dump($res);

$op = ( $stmt ) ? $stmt->fetchAll(PDO::FETCH_ASSOC) : '';

echo '

'; print_r($op); die;

上面的$this-> dbCon是我的PDO对象.

当我执行此代码时,我只会得到空结果.但是,当我通过phpmyadmin运行该程序时,它工作正常.

即使通过命令行执行也可以正常工作:

我也尝试了下面的方法(从答案中收到),但仍然没有成功

$stmt = $db->prepare("Call checkLogin(?,?);");

$stmt->execute(array($email,$password));

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (count($rows) == 0)

echo 'Failed Login!'."\n";

else

echo 'Logged In...'."\n".print_r($rows,true);

解决方法:

这似乎为我工作.但是我没有使用Bind参数.绑定似乎也为我工作.我还添加了PDO测试.

//-- Test if PDO is loaded properly.

if (extension_loaded ('PDO' )) {

echo 'PDO is loaded'."\n";

if (extension_loaded('pdo_mysql'))

echo 'PDO mysql driver is loaded.'."\n";

else

echo 'PDO mysql driver is NOT loaded.'."\n";

} else {

echo 'PDO is NOT loaded!'."\n";

}

//-- Run a test

$email = 'rob@home.net';

$password = 'abc123!@#';

$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'toor');

$stmt = $db->prepare("Call checkLogin(?,?);");

$stmt->execute(array($email,$password));

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (count($rows) == 0)

echo 'Failed Login!'."\n";

else

echo 'Logged In...'."\n".print_r($rows,true);

输出:

PDO is loaded

PDO mysql driver is loaded.

Logged In...

Array

(

[0] => Array

(

[id] => 1

[role_id] => 1

[name] => edit

)

)

标签:mysql,php,stored-procedures,pdo

来源: https://codeday.me/bug/20191028/1953032.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值