php 在串联有效的情况下参数绑定失败

mnowg1ta  于 2023-01-08  发布在  PHP
关注(0)|答案(2)|浏览(121)

我正在尝试使用pdo从php执行以下sql:第一个月
当我这样做时:

$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。

93ze6v8z

93ze6v8z1#

这两种方法都应该有效:
不使用绑定

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

使用命名参数

$sql = "SELECT * FROM my__table WHERE name = :name " ;  
$stmt = $dbconn->prepare($sql);    
$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR);    
$stmt->execute(array($_POST['name']));
bq3bfh9z

bq3bfh9z2#

这个呢?

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

相关问题