为什么使用bindparam而不是在两者都工作时执行,即使在使用exectute的int时也是如此

时间:2015-10-24 20:20:32

标签: php pdo

我是PDO的新手,我知道使用execute你将值作为字符串发送,但是当你绑定param时你可以定义它是什么,但是没有关于我的查询总是在通过执行通过字符串发送它们时的工作那么使用bind param有什么意义呢(我只是想弄清楚它是什么)。

例如:

$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')); 

1 个答案:

答案 0 :(得分:0)

有时执行失败。例如,如果您希望LIMIT从MySQL返回结果,那么您将需要Bind个参数/值,而不是使用execute命令传递它们。

$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适用于所有人。详细了解bindParambindValueWhat is the difference between bindParam and bindValue?