任何人都可以确认下面的前两个陈述是好的,最后一个是错误的:
无效的:
$sql="SELECT Code, Name FROM Country WHERE Code LIKE ? LIMIT 5";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", "C%");
无效的:
$sql="SELECT Code, Name FROM Country WHERE Code LIKE ? LIMIT 5";
$stmt = $mysqli->prepare();
$stmt->bind_param("s", strtolower($_POST['code']));
无效(绑定的不仅仅是文字值):
$sql="SELECT Code, Name FROM Country ? LIMIT 5";
$stmt = $mysqli->prepare();
$stmt->bind_param("s", "WHERE Code LIKE C%");
有效的:
$sql="SELECT Code, Name FROM Country WHERE Code LIKE ? LIMIT 5";
$stmt = $mysqli->prepare();
$stmt->bind_param("s", $_POST['code']);
我问它是因为我想正确理解 Mysqli Prepared Statements 的基本知识。
我仍然不确定我可以输入哪些参数bind_param()
。我可以不放变量,而是放它的值(我的第一个例子),甚至执行一些 php 函数(我的第二个例子)作为 bind_param() 中的参数吗?
php.net说bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
但这对我来说仍然不清楚。