我正在尝试从php类中显示引导警报。我使用echo来使用HTML标签。但是,警报显示在页面的底部,因此如何在标题下方显示警报。
public function insert($userName,$email,$phone,$choise) {
$dhandller = "SELECT `email`, `phone` FROM `info` WHERE email = '$email' OR phone = '$phone' ";
$statements = $this->_dbHandle->prepare($dhandller);
$statements->execute();
if ($statements->fetch() >= 1){
echo "<div class='alert alert-danger' style='margin-top: 50px;'>";
echo "<strong>Danger!</strong> Your contact deatails are existsed";
echo "</div>";
}}
答案 0 :(得分:0)
你不应该从处理数据库的类中echo
HTML - 该类的工作只是处理数据库相关的功能,而不是信息的显示。
如果该用户的行已经存在,则可以从false
方法返回insert
,然后从应用程序的另一部分输出HTML代码来处理显示网页。
类似但略有不同的方法是抛出exception。这可以在调用insert
方法的代码中捕获,然后可以输出一些HTML。
这样的事情会起作用:
try {
$user->insert($userName, $email, $phone, $choise);
} catch (\Exception $e) {
// Add or output the error message where the rest of your HTML lives.
}
您可以通过创建从PHP \Exception
类扩展的类来创建自己的异常。这样可以更容易地捕获您感兴趣的异常。
您需要在希望在页面上显示消息的位置输出HTML。这就是分离使用数据库和输出HTML的好处之一。
作为最后一点,您需要注意清理将在SQL语句中使用的用户提供的数据。人们可以以允许他们在您不想要允许的数据库中执行查询的方式输入这些值。这称为SQL注入。enter link description here由于您已经在使用PDO,这是一个好主意,请查看如何使用parameter binding安全地执行此操作。
答案 1 :(得分:0)
根据以上提示,我设法解决了以下问题:
//I have added the return statement
public function insert($userName,$email,$phone,$choise) {
$dhandller = "SELECT `email`, `phone` FROM `info` WHERE email = '$email' OR phone = '$phone' ";
$statements = $this->_dbHandle->prepare($dhandller);
$statements->execute();
if ($statements->fetch() >= 1){
return FALSE;
}else
{
$sqlQuerys = "INSERT INTO `oasis`.`info` VALUES ( '$userName', '$email', '$phone', '$choise')";
$statement = $this->_dbHandle->prepare($sqlQuerys);
$statement->execute();
return TRUE;
}
}
控制器:
if( $d->insert($firstname,$surename, $email,$choise) === TRUE){
$result='<div class="alert alert-success">Thank You! I will be in touch</div>';
} else {
$result='<div class="alert alert-danger">Sorry there was an error Please try again later</div>';
}
//观看次数(HTML)
<?php echo $result; ?>