例如在我准备好的statemens中的Named Placeholder中,我可以:
<?php
$stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name");
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
带有->bindValue
的{{1}}是否使用“PDO::PARAM_INT
”或“$id
”PHP函数检查is_int
是否真的是一个整数,或者以其他方式检查如果is_numeric
不是设置$id
设置的->bindValue
预期的那样,它会失败并崩溃吗?
我是PDO MySQL的新手,我也想知道:
PDO::PARAM_INT
修复$stmt->bindValue(':name', $name, PDO::PARAM_STR);
中遇到的任何编码问题,是否可以自动处理修剪和条带标记?
答案 0 :(得分:2)
将&gt; bindValue与PDO :: PARAM_INT一起使用
检查$ id是否真的是一个整数
不会被检查。将变量绑定为PARAM_INT将使PHP简单地将其转换为整数(int)"123"
。不会发生错误,非数字字符串将简单地转换为零。另请参阅String conversion to numbers上的PHP手册。
...... PDO :: PARAM_STR);
修复任何编码问题,如果在$ name中记录,它是否可以自动处理修剪和条带标记?
对于字符串类型参数,不会自动修剪或转换传递的值。
如果输入字符集与数据库字符集不同,则编码将由PDO驱动程序或接收数据库服务器进行调整。但就是这样。