簡體   English   中英

准備好的SQL語句從數據庫返回空白

[英]Prepared SQL Statement returning blank from Database

這是下面的代碼(之后進行解釋):

<?php
error_reporting(E_ALL);
ini_set('display_errors',1);

$uname = $_POST['uname'];

if($uname!=""){
    $mysqli = new mysqli('localhost', 'root', '', 'dota_site_test');

    if(mysqli_connect_errno()){
        echo("connetion error: " . mysqli_connect_errno());
        exit();
    }

    $stmt = $mysqli->prepare("SELECT Username FROM users WHERE Username=?");

    $stmt -> bind_param("s", $uname);

    $stmt -> execute();

    $stmt -> bind_result($unamecheck);

    if($stmt->num_rows > 0){
        echo "taken: ";
        echo "name is ".$unamecheck;

    }else{
        echo "free: ";
        echo "name is ".$unamecheck;
    }
    $stmt -> close();

    $mysqli -> close();

}


?>

我不確定問題出在哪里,但是當我在底部時,嘗試echo "name is ". $unamecheck; echo "name is ". $unamecheck; ,它只是返回空白。 該代碼的工作方式是,每按一次鍵,都會運行查詢以查看數據庫中是否已經存在用戶名。 我已經檢查了我的Ajax,並且$uname = $_POST['uname']; 工作正常。

另外,我在mysql本身中運行了查詢“ SELECT Username FROM users WHERE Username=? ”,替換了“ ? 使用我的用戶名,效果很好。

我對准備好的語句有誤嗎? 我不確定這是否是必須完成的方法,但是我在嘗試使用SQL注入時要小心。

我的測試結果顯示為free: name is無論輸入內容如何, free: name is被回顯。 沒有其他錯誤代碼。

你需要打電話

$stmt -> fetch();

$stmt -> bind_result($unamecheck);

在prepare查詢中,嘗試將=?分隔。 從列名稱開始,如下所示:

SELECT Username FROM users WHERE Username = ?

如果這不起作用,請打印mysql_error()以驗證是否存在mysql錯誤

暫無
暫無

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

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