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 生成的QRCode圖片加上下載按鈕
  • ¥15 板材切割优化算法,数学建模,python,lingo
  • ¥15 科来模拟ARP欺骗困惑求解
  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥15 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式