4

Stringmysql関数からを読み取るために次のコードを使用しています。

<?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", "myuser", "mypass" ); 



    $value = $_POST['myLname'];


    $result = $dbh->prepare("select check_user_exists(?) as retval");
    $result->bindParam(1, $value, 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();
    }

?>
4

1 に答える 1

4

その理由は、クエリから結果を取得していないためです。

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
于 2012-08-26T19:26:42.263 に答える