【发布时间】:2012-11-28 10:07:39
【问题描述】:
...我没有进一步说明。
我的数据库包含一列 'name' = 'John Richards'
我尝试像这样查询它:
$act = "John Richards";
prepareEditing($act);
function prepareEditing($act) {
include ($_SERVER['DOCUMENT_ROOT']."/final_ritg/includes/dbconnect.php");
$act = str_replace(" ", " ", $act);
$sql = "select `name`,`genre`, `members`, `story`, `image`, `contact_fname`, `contact_lname`, `contact_phone`, `contact_email` from `festival`.`act` where `name` = :name ;";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $act);
$stmt->execute();
echo $stmt->rowCount();
}
当 'name' 只包含一个单词时,例如 'john',函数返回 1($act 也包含 'john')。
我必须如何准备我的查询?
编辑:我正在全面使用 utf8。
编辑:这是我用来插入数据的 prepare stmt: $stmt->bindParam(':name', str_replace(' ',' ',$name));
我这样做了,因为在尝试检索时查询结果会在空白处被截断。
【问题讨论】:
-
我要补充一点,即使您在查询字符串中替换了变量,它也应该用引号引起来。因此,您应该使用
"name" = ':name',而不是"name" = :name。 -
这不是 PDO 的工作方式。占位符在需要时会给出引号。有关详细信息,请参阅prepared statements docs。
-
您确定该值是您选择的字面意思吗?尾随或双倍空格会干扰完全匹配。
标签: php mysql special-characters