Ben şu PHP kodu bir tabloya çok basit bir seçme yapan var.
$statement = $db->prepare("SELECT * FROM account WHERE fbid = :fbid");
$statement->bindParam(":fbid",$uid, PDO::PARAM_STR,45);
$out = $statement->execute();
print_r($out) // 1;
//$out = $statement->execute(array(':fbid' => $uid)); // also doesn't work
$row = $statement->fetch();
$out
(başarı) doğrudur ama $row
null.
EDIT:
$statement->debugDumpParams();
Çıkışlar
SQL: [40] SELECT * FROM account WHERE fbid = :fbid Params: 1 Key: Name: [5] :fbid paramno=-1 name=[5] ":fbid" is_param=1 param_type=2
Ben şöyle kodunu değiştirmek durumunda:
$statement = $db->prepare("SELECT * FROM account WHERE fbid = $uid");
$out = $statement->execute();
$row = $statement->fetch();
$row
Ben bekliyordum kayıt içerir.
Ben bir kayıp değilim. I) (hazırlamak :: PDO kullanıyorum, bindParams (vb) SQL Enjeksiyon saldırılarına karşı korunmak için (belki de ben bu konuda yanılmıyorsam).
EDIT: In my example, $uid is a numerical string (ie a string containing only numbers). In the database, the column type is VARCHAR(45)
EDIT:
Ben BIGINT için VARCHAR (45) adlı veritabanı türünü değiştirirseniz, hem sorguları çalışır. Ben yine VARCHAR (45) geri veritabanı türü türünü değiştirirseniz, o inşaat. Peki ne oluyor?
Halp Lütfen.