![](/img/trans.png)
[英]Display image in HTML from SQL database using PHP prepared statement
[英]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.