好的,所以我不能让它工作(或者):
$stmt = odbc_prepare($conn, "SELECT * FROM Users WHERE username=?");
odbc_execute($stmt, array($username));
$user = odbc_fetch_object($stmt);
$stmt = $pdo->prepare("SELECT * FROM Users WHERE username=?");
$stmt->execut(array($username));
$user = $stmt->fetchObject();
两者都返回相同的错误:
警告:odbc_execute():SQL错误:无法获取错误消息SQL 状态HY000在SQLExecute中 第24行的user.php
任何人都知道是否有可能解决这个问题,或者是否已经准备好了发表的声明?如果是这样,应该如何防范SQL注入?
答案 0 :(得分:1)
我从不使用fetchObject方法但是如何:
$stmt = $pdo->prepare("SELECT * FROM Users WHERE username=?");
$stmt->bindValue(1, $username);
try{
$stmt->execute();
while ($row = $stmt->fetch()){
// Do whatever.
}
}catch(PDOException $e){
echo($e->getMessage());
}
我还注意到问号周围的单引号('?'),它们不应该在那里。
为了使用try / catch内容,您需要在创建PDO连接时包含此内容:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
你可能也希望添加它:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE); // Try to use the driver's native prepared statements.