Php 无法显示搜索结果OOP
此代码部分用于显示结果的另一个页面Php 无法显示搜索结果OOP,php,oop,search,Php,Oop,Search,此代码部分用于显示结果的另一个页面 <?php require 'core/init.php'; //all classes are contained in here. $general->logged_out_protect(); $search = $_POST['search']; if ($users->user_exists($_POST['search']) == false) { $errors[] = "Sorry that username doe
<?php
require 'core/init.php'; //all classes are contained in here.
$general->logged_out_protect();
$search = $_POST['search'];
if ($users->user_exists($_POST['search']) == false) {
$errors[] = "Sorry that username doesn't exists";
} else
if ($users->user_exists($_POST['search']) == true) {
// i would like to display username which is in the user_exists if the above condition is met.
}
}
?>
您可以使用PDO并执行: 或mysqli和bind param,然后执行: 注意:如果使用“准备”: 您不需要转义输入字符串 你需要使用什么?作为占位符或:占位符: 查询调试: 要获取mysqli错误,请在执行或查询调用后使用:或diemysqli_error$db 解决方案 更改execute和bind_参数的顺序先绑定_参数,然后执行 您的sql查询应该是:从用户名为“%$?%”的用户中选择*
一些编程建议 PHP是动态类型的,所以变量或函数结果值可能返回不同的变量类型,坚持单一类型。 在某些情况下,可以使用null,而不是预定义的类型,例如, 未找到搜索时返回null,而不是整数值 对于PHP,使用注释确定函数接收或返回的数据类型。 以前
public function user_exists($username) {
public function user_exists($username) {
$query = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
$query->bindValue(1, $username);
try{
$query->execute();
$rows = $query->fetchColumn();
if($rows == 1){
return true;
}else{
return false;
}
} catch (PDOException $e){
die($e->getMessage());
}
}
之后
public /* bool */ function user_exists(/* string */ $username) {
public function user_exists($username) {
$query = null;
try{
$query = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
$query->bindValue(1, $username);
$query->execute();
$rows = $query->fetchColumn();
if($rows == 1){
return true;
}else{
return false;
}
} catch (PDOException $e){
die($e->getMessage());
}
}
它不会改变您的代码逻辑,但是可以帮助任何程序员,无论是您还是其他人,理解函数的逻辑
在返回非void函数值的函数中使用try语句时,只能使用单个try语句
在返回非void函数值的函数中使用try语句时,请在try之前声明具有空值的局部变量,并在try内进行所有赋值:
以前
public function user_exists($username) {
public function user_exists($username) {
$query = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
$query->bindValue(1, $username);
try{
$query->execute();
$rows = $query->fetchColumn();
if($rows == 1){
return true;
}else{
return false;
}
} catch (PDOException $e){
die($e->getMessage());
}
}
之后
public /* bool */ function user_exists(/* string */ $username) {
public function user_exists($username) {
$query = null;
try{
$query = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
$query->bindValue(1, $username);
$query->execute();
$rows = $query->fetchColumn();
if($rows == 1){
return true;
}else{
return false;
}
} catch (PDOException $e){
die($e->getMessage());
}
}
这允许您在生成异常时在catch部分读取它们的值,
或在捕捉部分或最终部分进行清洁
即使PHP环境被垃圾收集为:Java、.Net和其他编程环境,也欢迎进行一些良好的内部清理,并帮助您更好地控制编程逻辑
在返回非void函数值的函数中使用try语句时,将异常结果赋给局部变量,并将骰子转移到finally部分。
例如:
public function user_exists($username) {
$query = null;
$ExceptionMsg = "";
$AnyException = false;
try{
$query = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
$query->bindValue(1, $username);
$query->execute();
$rows = $query->fetchColumn();
if($rows == 1){
return true;
}else{
return false;
}
} catch (PDOException $e){
$ExceptionMsg = $e->getMessage();
$AnyException = true;
} finally{
if ($AnyException)
die($ExceptionMsg);
}
}
干杯。我在使用上述代码时遇到的主要问题是显示搜索结果。如果我没有看到某些问题,请告诉我。您可以随时编辑您的问题。目前它确实需要它,因为它不清楚你的问题是什么。绑定应该在执行3之前进行。对于查询中的绑定,必须提供占位符。执行SELECT*from-使其呼吸SELECT*from不会获得任何字节