ODBC и SQL Server 2008: не можете использовать подготовленные заявления?

ОК, поэтому я не могу заставить это работать (либо):

$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 в user.php в строке 24

Кто-нибудь знает, можно ли разрешить это или подготовленные заявления за столом? Если да, то как следует защищать от инъекций 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.