[英]mysqli_stmt_prepare returns false from within a function
我正在盡力使我的登錄腳本定向,並檢查我的網站。 這樣,我創建了一個名為“ attempt_login”的函數。 該函數通過外部php文件提供的“ mysqli_connect”函數使用數據庫連接,並包含$ link變量。
但是,當在我的“ attempt_login”中達到“ mysqli_stmt_prepare”功能時。 它總是返回false,因此if語句永遠不會運行。
mysql_connect.php
require_once '../conf.php';
$link = mysqli_connect($mysql_server,$mysql_user,$mysql_pass,$mysql_db);
if(mysqli_connect_error())
{
//Fail
echo mysqli_connect_error();
}else{
//Success
}
return $link;
並且來自“ attempt_login”的代碼失敗:
$link = require_once 'functions/mysql/mysql_connect.php';
print_r($link);
$stmt = mysqli_stmt_init($link);
echo mysqli_stmt_error($stmt);
echo mysqli_error();
//This if statement always fails.
if(mysqli_stmt_prepare($stmt,"SELECT member_salt FROM members WHERE username=?" ) )
{
mysqli_stmt_bind_param($stmt,'s',$login_details['username']);
mysqli_stmt_execute($stmt);
$member_salt = NULL;
mysqli_stmt_bind_result($stmt,$member_salt);
mysqli_stmt_close($stmt);
}
調用該函數非常簡單。
attempt_login($login_details);
我嘗試了許多方法來執行此操作,但是它似乎僅在不在函數內時才起作用。 這違背了我試圖將其用於功能的目的。 如果將錯誤輸出移至if語句之后,它將輸出:
沒有選擇數據庫
即使在鏈接中明確設置了一個。 我也可以做一個print_r($ link); 並且它確實為mysql服務器打印正確的數據。
對於程序和面向對象的mysqli樣式,它也有相同的問題,對於“ mysqli_prepare”,它也失敗。
我的站點上確實有mysql,但是在函數中運行任何東西的任何嘗試都會失敗。
我已經搜索了幾個小時,試圖找到答案,但是找不到任何東西。 我期待着您的回音! 提前謝謝了。
〜特拉維斯
我想說的是您還沒有選擇數據庫。
$mysql_db
../conf.php
沒有在../conf.php
設置,或者輸入錯誤,或者$mysql_db
在mysql_connect.php
不可見。
您似乎沒有將$stmt
傳遞給函數,我建議您在scope上閱讀此內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.