Php pdo未从mysql函数读取字符串
我使用以下代码从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
字符串
:
<?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);