此代码部分用于要显示结果的另一个页面。
<?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.
}
}
?>
//这是函数user_exists,我在其中确定用户名是否在数据库中,然后我显示用户名。
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());
}
}
答案 0 :(得分:1)
您要么使用PDO并执行:http://php.net/manual/en/pdo.prepare.php
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
或mysqli并绑定param和然后执行:http://php.net/manual/en/mysqli.prepare.php
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
请注意,如果您使用prepare:
?
作为占位符或:placeholder
:http://php.net/manual/en/mysqli-stmt.bind-param.php 在执行或查询调用后使用or die(mysqli_error($db)
来获取mysqli错误。
"SELECT * FROM users WHERE username like '%$?%'"
答案 1 :(得分:0)
几个编程建议。
在某些情况下,可以使用null
,而不是预定义的类型,例如,
找不到搜索时返回null
,而不是整数值。
在
public function user_exists($username) {
在
public /* bool */ function user_exists(/* string */ $username) {
它不会改变你的代码逻辑,但是,帮助任何程序员,无论是你或他人,理解函数的逻辑。
在返回值(非void
函数)的函数中使用“try”语句时,只使用一个“try”语句。
在返回值(非void
函数)的函数中使用“try”语句时,在“try”之前使用空值声明局部变量,并在“try”内部进行所有赋值尝试“:
在
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 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
部分中读取它们的值,
或者在catch
部分或finally
部分清除它们。
即使PHP环境被收集为:Java,“。Net”和其他编程环境,也欢迎一些好的“House Cleaning”,并帮助您更好地控制编程逻辑。
void
函数)的函数中使用“try”语句时,将异常结果分配给局部变量,并将die
传递给“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);
}
}
干杯。