如何PDO的MySQL处理准备语句中的参数?(How does PDO MySQL handle p

2019-09-24 02:15发布

例如,在我准备statemens命名占位符,我可以有:

<?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);

请问->bindValuePDO::PARAM_INT检查,如果$id是真的很喜欢使用“整数is_int ”或“ is_numeric ” PHP函数,或以某种方式,否则,将它失败和崩溃,如果$id是不是有什么->bindValuePDO::PARAM_INT设置组希望它是什么?

我是新来的PDO MySQL和我也想知道会把:

$stmt->bindValue(':name', $name, PDO::PARAM_STR);

修复任何编码问题,如果accountered在$name ,它可以自动处理微调和条带化的标签呢?

Answer 1:

请问 - > bindValue与PDO :: PARAM_INT检查如果$ id为真正使用整数

它不会被选中。 结合一个变量作为PARAM_INT将使PHP简单地将它转换成整数(int)"123"第一。 没有出现错误,非数字字符串将简单地投为零。 又见PHP手册字符串转换为数字 。

... PDO :: PARAM_STR);
修复任何编码问题,如果accountered在$名称,它可以自动处理微调和条带化的标签呢?

对于字符串型参数会有传递的值的无自动修整或转化。

如果输入的字符集从数据库中的字符集不同,则编码将被或者通过PDO驱动,或由接收数据库服务器适配。 但仅此而已。



文章来源: How does PDO MySQL handle parameters in prepared statements?