1
$username_decoded = '<i>marco</i>';
$stmt = $this->db->prepare("SELECT * FROM foo WHERE username=:username");
$stmt->bindParam(':username',$username_decoded,PDO::PARAM_STR);
$stmt->execute();

$all_fetched = $stmt->fetchAll(PDO::FETCH_NUM);

print_r($all_fetched);

上面的代码给了我空数组。该用户名存在于数据库中。它出什么问题了?

4

1 回答 1

0

我打赌username列的类型是CHAR(n)而不是VARCHAR(n)CHAR(n)在字符串的末尾添加空格以填充它以适应列的宽度。将您的列更改为VARCHAR(n)并确保在之后修剪所有多余的空格。

否则,如果您无法更改列,则可以在将其与数据库进行比较之前使用,也可以在查询中使用。str_pad($username_decoded, length of column)TRIM(username)

于 2012-06-20T15:25:26.633 回答