Php 当PDO语句在搜索表单的if语句之外时,查询为空错误
当我将PDO语句放在搜索表单的if语句之外时,收到一个查询为空的错误。下面的代码工作正常,没有错误,但在我尝试构建分页时会产生问题:Php 当PDO语句在搜索表单的if语句之外时,查询为空错误,php,mysql,search,pdo,prepared-statement,Php,Mysql,Search,Pdo,Prepared Statement,当我将PDO语句放在搜索表单的if语句之外时,收到一个查询为空的错误。下面的代码工作正常,没有错误,但在我尝试构建分页时会产生问题: if (isset($_POST['submit'])) { $countryname = $_POST['country']; $sql = "SELECT * from epic_schools_tbl where country = :countryname order by school_name"; $stmt = $pdo
if (isset($_POST['submit'])) {
$countryname = $_POST['country'];
$sql = "SELECT * from epic_schools_tbl where country = :countryname order by school_name";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':countryname', $countryname);
$stmt->execute();
$row_count = $stmt->rowCount();
if (isset($_POST['clear'])) {
$sql = "";
}
}
下面的代码非常理想,但在prepare($sql)处绘制的查询为空错误:
如何解决上述代码中的查询为空错误?试试看是否有帮助
<?php
if (isset($_POST['submit'])) {
$stmt = $pdo->prepare("SELECT * FROM epic_schools_tbl WHERE country = :countryname ORDER BY school_name ASC");
$stmt->bindParam(':countryname', $countryname);
$countryname = $_POST['country'];
if ($stmt->execute()) {
$row_count = $stmt->rowCount();
echo $row_count;
} else {
echo "Sorry could not retrieve records";
}
}
?>
示例2已更新
<?php
if (!empty($_POST['country'])) {
$sql = "SELECT * FROM epic_schools_tbl WHERE country = :countryname ORDER BY school_name";
} else {
echo "Sorry the country name is empty. Cannot continue";
}
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':countryname', $countryname);
$countryname = $_POST['country'];
if ($stmt->execute()) {
$row_count = $stmt->rowCount();
echo $row_count;
} else {
echo "Sorry could not retrieve records. Unable to perform query";
}
?>
如果您使用常识-您将看到,当案例碰到else
时,$sql
变量被设置为空字符串-然后您尝试将该空字符串作为查询执行。来吧。。。。猜猜如果你在if/ELSE中选择ELSE路线会发生什么?!?!?!?!万一你不能。。。您得到了一个空查询问题是,如果查询是空字符串,为什么还要准备查询?我感谢您的帮助,但删除else并没有解决问题。当删除else时,我收到了一个额外的错误,未定义的variable,但是如果它出现在else中,那么您的$sql是空的,因此您得到了您所说的错误。如果完全删除else,则未设置$\u POST['submit']
时,$sql未定义。你的逻辑是这里的问题。第一种方法有什么问题?你想实现什么?这是可行的,但与我的第一个示例类似。我希望在if语句之外有带$stmt变量的pdo语句。请问为什么@B6431当我尝试构建分页时,它导致了问题。每个分页按钮都将位于一个输入元素内,该元素将更改查询。我看到了一个工作示例,其中if语句中只有select语句。这就是我试图用这种方式构造它的原因。如果您的示例是标准过程,我将接受您的答案,并尝试用另一种方式创建分页。请尝试我的第二个示例,看看它是否在@B6431中起作用
<?php
if (!empty($_POST['country'])) {
$sql = "SELECT * FROM epic_schools_tbl WHERE country = :countryname ORDER BY school_name";
} else {
echo "Sorry the country name is empty. Cannot continue";
}
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':countryname', $countryname);
$countryname = $_POST['country'];
if ($stmt->execute()) {
$row_count = $stmt->rowCount();
echo $row_count;
} else {
echo "Sorry could not retrieve records. Unable to perform query";
}
?>