Php SQLI准备的语句
我已经修改了我的代码,希望这是一个多一点,它应该是和感谢你们所有的帮助,这是非常感谢Php SQLI准备的语句,php,mysqli,Php,Mysqli,我已经修改了我的代码,希望这是一个多一点,它应该是和感谢你们所有的帮助,这是非常感谢 <?php $mysqli = new mysqli("localhost", "root", "", "project"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } if ($stmt = $mysqli->prepare("SELECT
<?php
$mysqli = new mysqli("localhost", "root", "", "project");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($stmt = $mysqli->prepare("SELECT * FROM users WHERE ? BETWEEN ? AND ?")){
$stmt->bind_param('iii',$weight, $weight1 ,$weight2);
$weight = "weight";
$weight1 = "weight + 1";
$weight2 = "weight - 1";
$stmt->execute();
echo "{$weight}";
echo "{$weight1}";
echo "{$weight2}";
$stmt->close();
}
else {
printf("Prepared Statement Error: %s\n", $mysqli->error);
}
?>
在绑定变量之前,您不需要分配它吗?像下面这样
<?php
$mysqli = new mysqli("localhost", "root", "", "project");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$weight = ???;
$betweenOne = ???;
$betweenTwo = ???;
if ($stmt = $mysqli->prepare("SELECT * FROM users WHERE ? BETWEEN ? AND ?")) {
$stmt->bind_param('iii', $weight, $betweenOne, $betweenTwo);
$stmt->execute();
echo $weight;
$stmt->close();
} else {
printf("Prepared Statement Error: %s\n", $mysqli->error);
}
首先,请自己帮个忙,不要学习MySQL编写的语句,而是考虑PDO准备好的语句。< /P> 接下来,无论您选择哪种方法,都要首先注意错误报告 接下来,无论选择哪种方法,都必须计算占位符。它们具有以匹配绑定变量的数量。在您的代码中,它们不是
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "root", "", "project");
$stmt = $mysqli->prepare("SELECT * FROM users WHERE weight BETWEEN ? AND ?");
$stmt->bind_param('ii', $from, $to);
$from = -1;
$to = 1;
$stmt->execute();
$res = $stmt->get_result();
var_dump($res->fetch_assoc());
您在prepare语句中使用了2'?'。这意味着您必须在bind_param()
Sidenote()中使用两个变量:这一行如果($stmt=$mysqli->prepare(“SELECT…”
缺少一个结束语)
进一步到@Fred的注释,请仅在此处显示您尝试过的代码-如果它会导致解析错误,需要首先修复该错误:)
。我希望您的问题得到解决,毕竟注释等仍然没有太多意义。我认为您唯一的选择是使用准备好的语句发布您想要运行的原始SQL查询。权重包含数字,请将“ss”更改为“ii”侧注:这一行如果($stmt=$mysqli->prepare('选择….
缺少一个结束语)
——与OP的相同。注意SO的语法突出显示?@OliverBS您在echo$weight
上缺少一个双引号,或者删除add one moreNo,no double quote的双引号@Tabby@Fred-ii-同意双引号将使php更加有效,没有任何理由。