簡體   English   中英

的php:mysqli_num_rows返回0

[英]php: mysqli_num_rows is returning 0

我知道這可能是重復的:
PHP-MYSQLI_NUM_ROWS始終返回0
PHP-mysqli_num_rows()始終返回0


問題是他們都沒有給我答案。


這是我的代碼示例代碼,語法與我使用的語法相同。


index.html

<html>
    <head><title>GAS - Give Away System - Create User</title></head>
    <body>
        <script src="jquery.js"></script>
        <input type="text" placeholder="Username" id="uname" /><br><br>
        <p id="errors"></p>
        <script>
            $(document).ready(function(){
                $.ajaxSetup({cache:false});
                setInterval(function(){
                    $("#errors").load("php/errorchecking.php?c=username&v="+document.getElementById('uname').value);
                }, 500);
            });
        </script>
    </body>
</html>

php / errorchecking.php

<?php
    $con = mysqli_connect('localhost', 'root', '', 'gas');
    if(isset($_GET['c']) && isset($_GET['v'])){
        echo 'Current value: ', $_GET['v'], '<br>This value is set for: ', $_GET['c'], '<br><br>';

        if($_GET['c']==="username"){
            if($_GET['v']===null){
                echo "Sorry, this username is empty! Please write a username!";
            }else{
                // I know this is open for SQL Injection, it's not in my worries.
                $query = "SELECT `username` FROM `users` WHERE `username` ='{$_GET['v']}'";
                $sql = $con->query($query);

                if(mysqli_num_rows($sql) > 0){
                    echo "Sorry, this username is already in use! Please choose something else";
                }else{
                    echo "Username avaible!"; //This is line 17
                }
            }
        }
    }else{
        echo 'This is an invalid form!';
    }
?>

現在,假設我在表中有一個名為User15的用戶名,某人的輸入與之完全相同,它將顯示消息"Username available!" Line : 17 17

為什么這樣做呢? 因為那里已經是一個名為User15的用戶,所以它應該顯示的是"Sorry, this username is already in use! Please choose something else"

感謝您抽出寶貴的時間來幫助我! 塞西莉。

這是錯誤的查詢語法方式。 您需要使用反單引號,而不是' S:

$query = "SELECT username FROM `users` WHERE 'username'='".$_GET['v']."'";
//-------------------------------------------^--------^

更改為:

$query = "SELECT `username` FROM `users` WHERE `username`='".$_GET['v']."'";

注意:

  • `` -對於列。
  • '' -對於值。

您必須從查詢中刪除列名周圍的' (單引號),如下所示:-

$query = "SELECT `username` FROM `users` WHERE `username`='".$_GET['v']."'"; 

注意:-使用反引號代替' (單引號)。 因為單引號( ' )也用於值,反引號也用於column-nametable-name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM