我正在尝试学习PDO,但我还没有在任何其他网站上遇到过,
我有两个问题...
$query = mysql_query("INSERT INTO `users` (oauth_provider, oauth_uid, username,email,twitter_oauth_token,twitter_oauth_token_secret) VALUES ('$oauth_provider', $uid, '$username','$email','','')") or die(mysql_error());
$query = mysql_query("SELECT * FROM `users` WHERE oauth_uid = '$uid' and oauth_provider = '$oauth_provider'");
$result = mysql_fetch_array($query);
return $result;这是如何写成准备好的语句的呢?
$query1 = "INSERT QUERY";
$stmt1 = $DBH->prepare($query1);
$query2 = "SELECT QUERY";
$stmt2 = $DBH->prepare($query2);发布于 2013-05-23 02:09:36
您的示例代码有点令人困惑,因为您只是覆盖了$query,并且只运行了一个查询。
我认为您使用PDO预准备语句的方法在很大程度上是正确的,但是我要指出的是,如果您需要同时使用这两个变量,则可以考虑对statment对象使用不同的变量名。
发布于 2013-05-23 02:18:46
看看这段代码:
<?php
try {
$username = 'user';
$password = '';
$conn = new PDO('mysql:host=localhost;dbname=test', $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//1-st request - simplified
$stmt = $conn->prepare('INSERT INTO `users` (oauth_provider)
VALUES (:oauth_provider)');
$stmt->execute(array("oauth_provider" => $oauth_provider));
//2-nd request
$stmt = $conn->prepare('SELECT * FROM `users`
WHERE oauth_uid =:uid AND oauth_provider = :oauth_provider');
$stmt->execute(array("uid" => $uid, "oauth_provider" => $oauth_provider));
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
var_dump($row);
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>我认为,很明显,如何使用预准备语句:
$conn->prepare并将SQL请求放在其中,每个参数都有:var_name。发布于 2013-05-23 02:46:19
这对我来说很有效:
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("INSERT INTO table1");
$stmt2 = $dbh->prepare("SELECT FROM table2");
$stmt->execute();
$stmt2->execute();这不是一个干净的解决方案,但它对我很有效,我会一直使用它,直到我找到一个“优雅”的解决方案。
确保将其包含在try catch块中。
https://stackoverflow.com/questions/16698731
复制相似问题