При связывании работает сбой привязки параметров
Я пытаюсь выполнить следующий 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 ответа
Оба из них должны работать:
Без использования привязки
$ 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['имя']));
Как насчет этого?
$sql = "SELECT * FROM my__table WHERE name='?'" ;
$stmt = $dbconn->prepare($sql);
$stmt->bindValue(1, $_POST['name'], PDO::PARAM_STR);
$stmt->execute();