为什么使用bindparam而不是execute,当两者都工作时,即使使用int和execute


Why use bindparam rather than execute when both work, even when using ints with exectute

我是新的PDO,我知道与执行你发送值作为一个字符串,但是当你绑定参数,你可以定义它是什么,但无论我的查询总是工作时,通过一个字符串通过执行发送它们,所以什么是点(有一个我只是想弄清楚它是什么)使用绑定参数。

例如:

$insert_whatever = $database->prepare("INSERT INTO test(blah, blah1) VALUES (?, ?)");
$insert_whatever->bindparam('1', PDO::PARAM_INT);
$insert_whatever->execute(); 

$insert_whatever = $database->prepare("INSERT INTO test(blah, blah1) VALUES (?, ?)");
$insert_whatever->execute(array('1','1')); 

执行有时会失败。例如,如果你想要LIMIT你的结果从MySQL返回,那么你需要Bind参数/值,而不是通过执行命令传递它们。

$query = $pdo->prepare("SELECT * FROM table LIMIT ?, ?");

你将做:

$query->bindParam("1", 1, PDO::PARAM_INT) // assuming that you want to start from 1
$query->bindParam("2", 10, PDO::PARAM_INT) // assuming that you want to stop at 10

,然后执行:

$query->execute();

如果你要从一个变量中附加一个整数值,那么你需要将它绑定为一个值:

$query->bindValue("1", $variable, PDO::PARAM_INT);

提示:bindValue适用于所有。在这里了解更多关于bindParambindValue的信息:bindParam和bindValue的区别是什么?