При связывании работает сбой привязки параметров - PullRequest
0 голосов
/ 26 октября 2009

Я пытаюсь выполнить следующий sql из php с помощью pdo: SELECT * FROM my_table WHERE name=?.

Когда я делаю это:

$sql = 'SELECT * FROM my__table WHERE name=?' ;  
$stmt = $dbconn->prepare($sql);  
$stmt->bindValue(1, $_POST['name'], PDO::PARAM_STR);  
$stmt->execute();   

Я получаю пустой набор результатов.

Когда я делаю это:

$sql = 'SELECT * FROM my__table WHERE name=\''.$_POST['name'].'\'' ;  
$stmt = $dbconn->prepare($sql);  
$stmt->execute();  

Я получаю нужную мне строку.

Столбец «имя» - это VARCHAR (32). Эта ошибка происходит только со строками. Когда связанный параметр - это sql INTEGER, все работает как положено.

Я использую sqlite3, php 5.2.6 под Apache в Ubuntu.

Ответы [ 2 ]

0 голосов
/ 27 октября 2009

Оба они должны работать:

Без использования привязки

$ sql = "SELECT * FROM my__table WHERE name =?";
$ stmt = $ dbconn-> prepare ($ sql);
$ Stmt-> выполнить (массив ($ _ POST [ 'имя']));

Использование именованного параметра

$ sql = "SELECT * FROM my__table WHERE name =: name";
$ stmt = $ dbconn-> prepare ($ sql);
$ stmt-> bindParam (': name', $ _POST ['name'], PDO :: PARAM_STR);
$ Stmt-> выполнить (массив ($ _ POST [ 'имя']));

0 голосов
/ 26 октября 2009

Как насчет этого?

$sql = "SELECT * FROM my__table WHERE name='?'" ;  
$stmt = $dbconn->prepare($sql);  
$stmt->bindValue(1, $_POST['name'], PDO::PARAM_STR);  
$stmt->execute();
...