PDO print_r()返回1

时间:2014-04-20 22:14:41

标签: php mysql database pdo

所以我有一个PDO和MySQL脚本,用于根据用户的用户名或屏幕名称检索结果,在这种情况下为e

首先,我在文件开头有一个用于连接数据库的函数。 (它出现在functions.php文件中,required出现在每页的开头,因此全球化)。这个功能没有任何问题(据我所知)。

function SQLConnect () {
// Database connection variables
$host = "localhost";
$dbname = "dropbox";
$user = "root";
$password = "ethan17458";

// Connect to the database
try {

//put $connect in global scale of document
 global $connect;

 // attempt to connect to database
 $connect = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);

// Sets error mode
$connect->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );



} catch (PDOException $e) {

// Retrieves error message if connection fails
echo $e->getMessage();

    }
}

此功能使用PDO连接到包含用户信息的数据库。

接下来是检索用户数据的脚本

// Test user in database
$test = "e";


try {

//confirms running of "try" block
echo "tried";

//database information
$host = "localhost";
$dbname = "dropbox";
$user = "root";
$password = "ethan17458";




//Prepare statement from connection function
// username_raw is "e"
//username should be e1671797c52e15f763380b45e841ec32 (md5)
$statement = $connect->prepare("SELECT `username` FROM `users` WHERE `username_raw` = ':name'");

//create placeholder for prepared statement
$statement->bindParam(":name", $test);

//make the statement fetch in an associative array
$statement->setFetchMode(PDO::FETCH_ASSOC);

//execute the prepared statement
$statement->execute();

//set $get_result to the fetched statement
$get_result = $statement->fetch();

//attempt to display the data fetched in $get_result
echo "<br />";
echo "<pre>";

//Outputs 1 for some reason
// **not working**
echo print_r($get_result);


echo "</pre>";
echo "<br />";

} catch (PDOException $e) {
//confirm running of "catch" block
echo "caught";

// echo error message
echo $e->getMessage();

}

当我运行此脚本时,我得到了这个输出:

tried

1

在此输出中,tried确认&#34;尝试&#34;声明已被处理,1是我开始遇到问题的地方。

如果脚本按照我的意愿运行,脚本将从数据库中检索数据e1671797c52e15f763380b45e841ec32,因为usernameusername_raw的列为e ,正如PDO准备声明中所述。

理想的输出应该是

tried

e1671797c52e15f763380b45e841ec32

我做错了什么?

1 个答案:

答案 0 :(得分:0)

fetch()返回false,它不会向屏幕打印任何内容。这是错误的,因为您没有得到任何结果,因为您在查询中围绕参数放置单引号,PDO会为您处理。只需删除周围的引号:名称。