我使用以下代码从
mysql函数中读取字符串:
<?PHP print_r($_POST); try { $dbh = new PDO("MysqL:dbname=mydb;host=myhost","myuser","mypass" ); $value = $_POST['myLname']; print $value ; //print $dbh ; $stmt = $dbh->prepare("CALL check_user_exists(?)"); $stmt->bindParam(1,$value,PDO::ParaM_STR | PDO::ParaM_INPUT_OUTPUT,50); // call the stored procedure $stmt->execute(); print "procedure returned $value\n"; echo "PDO connection object created"; $dbh = null; } catch(PDOException $e) { echo $e->getMessage(); } ?>
这不是读取返回值,但是如果我读取值usimg MysqL *就像:
<?PHP $dbhost='myhost'; $dbuser='mydb'; $dbpassword='mypass'; $db='mydb'; $con=MysqL_connect($dbhost,$dbuser,$dbpassword) or die("Could not connect: " . MysqL_error()); ; MysqL_select_db($db,$con); $qry_str = "select check_user_exists('chadhass@hotmail.com')"; $rset = MysqL_query($qry_str) or exit(MysqL_error()); $row = MysqL_fetch_assoc($rset); MysqL_close($con); foreach($row as $k=>$v) { print $k.'=>'.$v; } ?>
这会正确返回.我有什么想法,我错过了吗?
功能:
CREATE FUNCTION `check_user_exists`(in_email VARCHAR(100)) RETURNS varchar(1) CHARSET utf8 READS sql DATA BEGIN DECLARE vcount INT; DECLARE vcount1 INT; SELECT COUNT(*) INTO vcount FROM USERS WHERE USEREMAIL=in_email; IF vcount=1 then SELECT COUNT(*) INTO vcount1 FROM USERS WHERE USEREMAIL=in_email and isactive=1; if vcount1=1 then return('1'); else return('0'); end if; ELSE RETURN('2'); END IF; END
适用于PDO的代码::
<?PHP //print_r($_POST); try { $dbh = new PDO(PDO("MysqL:dbname=mydb;host=myhost","mypass" ); $value = $_POST['myLname']; $result = $dbh->prepare("select check_user_exists(?) as retval"); $result->bindParam(1,PDO::ParaM_STR,2); $result->setFetchMode(PDO::FETCH_CLASS,'stdClass'); $result->execute(); $obj = $result->fetch(); print($obj->retval); echo "PDO connection object created"; $dbh = null; } catch(PDOException $e) { echo $e->getMessage(); } ?>
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。