我第一次尝试使用MySQL的预准备语句,但它没有返回任何数据:
$pdo = new PDO('mysql:dbname=[DBASE];host=localhost', '[USER]', '[PWORD]',
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$sth = $pdo->prepare('SELECT id FROM users WHERE username = "' . mysql_real_escape_string($_SESSION['myusername']) . '"');
$sth->execute();
$result = $sth->fetch(PDO::FETCH_OBJ);
$user_id = $result->id;
可能很清楚我正在尝试返回给定用户名的user_id。有人能让我知道我做错了什么。感谢。
答案 0 :(得分:1)
对于你想要做的事情:
$pdo = new PDO('mysql:dbname=[DBASE];host=localhost', '[USER]', '[PWORD]',
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$sth = $pdo->prepare('SELECT id FROM users WHERE username = ?');
$success = $sth->execute(array($_SESSION['username']));
if ($success) {
$result = $sth->fetch(PDO::FETCH_OBJ);
$user_id = $result->id;
} else {
echo "Query failed.";
var_dump($sth->errorInfo());
}
您必须使用命名或位置参数准备语句。如果准备成功,则可以对该语句执行查询。根据绑定参数的方式,execute将接受不同类型的参数。
如果语句的执行成功,您可以从中读取结果。
手册中的更多示例: