好了,所以我不能得到这个工作(或):
$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错误:无法在SQLExecute在user.php的上线路24提取错误消息,SQL状态HY000
任何人都知道,如果有可能解决这个问题,或者准备关闭表的语句? 如果是这样,应该如何防范SQL注入?
我从来没有使用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.