Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php pdo未从mysql函数读取字符串_Php_Mysql_Pdo - Fatal编程技术网

Php pdo未从mysql函数读取字符串

Php pdo未从mysql函数读取字符串,php,mysql,pdo,Php,Mysql,Pdo,我使用以下代码从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_ex

我使用以下代码从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();
}
?>
为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();
    }

?>

原因是,您没有从查询中获取结果

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

PHP版本5.2.17 Mysql客户端API版本5.1.49用于Mysql的PDO驱动程序,客户端库版本5.1.49可能是我忽略了一些东西,“execute”之后似乎没有获取任何结果?以下示例:示例#4从调用带有输出参数的存储过程。请包含
check\u user\u exists()的定义。
?具体地说,它是一个返回值的函数(在这种情况下,正如@DirkMcQuickly所建议的,您需要从查询的结果集获取一条记录:毕竟,这是您在
mysql\u*
版本中所做的);或者它是一个带有更新的
INOUT
参数的过程(在这种情况下,
$value
应该通过调用进行更新)?如上所述,因为它是一个
返回值的函数,所以您需要获取查询返回的(唯一)记录,就像您在
mysql.*
版本中所做的那样。但是,如果要将函数更改为存储过程,则可以将参数设置为
INOUT
one,并实现您一直试图实现的目标。谢谢。现在终于可以得到我的输出参数了。
<?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();
    }

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