我正在尝试使用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();
我得到了我需要的那一行。
列'name'是VARCHAR(32)。这个错误只发生在字符串上。当绑定参数是一个sql INTEGER时,一切都像它应该的那样工作。
我在Ubuntu的Apache下使用sqlite3,php 5.2.6。
答案 0 :(得分:0)
这个怎么样?
$sql = "SELECT * FROM my__table WHERE name='?'" ;
$stmt = $dbconn->prepare($sql);
$stmt->bindValue(1, $_POST['name'], PDO::PARAM_STR);
$stmt->execute();
答案 1 :(得分:0)
这两项都应该有效:
不使用绑定
$ 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 [ '名称']));