dongzhan7253 2015-11-09 23:20
浏览 46
已采纳

如何用MYSQLI检查数据库中是否存在学校[重复]

This question already has an answer here:

I have a question on how to check if a school exists within the database i have made? I have provided the MYSQLI code below. If you see any syntax errors can you please help me fix them. Thank you for your help i really appreciate it.

$connection = mysqli_connect("localhost", "root", "root", "babble");
    $check ="SELECT COUNT(1) FROM schools WHERE schoolname = '$_POST[schoolname]'";
    $result = mysqli_query($connection,$check);
    $data = mysqli_fetch_array($result, MYSQLI_NUM);
    if ($data[0] > 1) {
        echo "<center><div class='alert alert-danger'><p>Sorry, but that school already exists in the database</p></div></center>";
    }else{
        $insert = "INSERT INTO schools";        
    }
</div>
  • 写回答

1条回答 默认 最新

  • duanmen1887 2015-11-10 00:49
    关注

    You forgot the quotes around the post variable name. Also, you should sanitize to prevent injection. I created a function you may use for future reference. It will trim everything but letters and numbers. (because i assume your school name will not contain symbols)

    Also, you should check out PDO. I wrote up an example for you.

    function protect($str)
    {
        $str = stripslashes($str);
        $str = strip_tags($str);
        $str = preg_replace("[^A-Za-z0-9]", "", $str);
    
        return $str;
    }
    
    $schoolToCheck = protect($_POST['schoolname']);
    

    PDO

    $pdo = new PDO('mysql:host=localhost;dbname=root', 'root', 'babble');
    
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM schools WHERE schoolname = '$schoolToCheck'");
    $stmt->execute();
    if($stmt->rowCount() > 0)
    {
        echo "<center><div class='alert alert-danger'><p>Sorry, but that school already exists in the database</p></div></center>";
    }
    else
    {
        $insert = "INSERT INTO schools";   
    }
    

    MYSQLI

    $connection = mysqli_connect("localhost", "root", "root", "babble");
    
    $check = "SELECT COUNT(*) FROM schools WHERE schoolname = '$schoolToCheck'";
    $result = mysqli_query($connection,$check);
    $data = mysqli_fetch_array($result, MYSQLI_NUM);
    if ($data[0] > 0)
    {
        echo "<center><div class='alert alert-danger'><p>Sorry, but that school already exists in the database</p></div></center>";
    }
    else
    {
        $insert = "INSERT INTO schools";        
    }
    

    EDIT: Short and sweet

    $count = $pdo->query("SELECT COUNT(*) FROM schools WHERE schoolname = '$schoolToCheck'")->fetchColumn();
    if($count > 0)
    {
        echo "already exists";
    }
    else
    {
        echo "";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊