Parametre bağlama başarısız nerede birleştirme çalışmaları

2 Cevap php

Ben PDO kullanarak php aşağıdaki sql çalıştırmak çalışıyorum: SELECT * FROM my_table WHERE name=?.

Bunu yaptığınızda:

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

Ben boş bir sonuç kümesi olsun.

Bunu yaptığınızda:

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

Ben ihtiyacım satır olsun.

Sütun 'isim' VARCHAR (32) 'dir. Bu hata sadece dizeleri ile olur. Bağlı parametre bir sql TAMSAYILI olduğunda gerekiyordu gibi her şey çalışıyor.

Ubuntu Apache altında Sqlite3, php 5.2.6 kullanıyorum.

2 Cevap

Ne bu konuda?

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

Bunların her ikisi de çalışması gerekir:

Bağlayıcı kullanmadan

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

Adlandırılmış bir parametre kullanma

$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']));