$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);
上面的代码给了我空数组。该用户名存在于db中。怎么了?
答案 0 :(得分:0)
我认为username
列的类型为CHAR(n)
而不是VARCHAR(n)
。 CHAR(n)
在字符串的末尾添加空格以填充它以适合列的宽度。将您的列更改为VARCHAR(n)
,并确保之后修剪所有多余的空格。
否则,如果您无法更改列,则可以在将其与数据库进行比较之前使用str_pad($username_decoded, length of column)
,或在查询中使用TRIM(username)
。