簡體   English   中英

mysqli_stmt_prepare從函數內部返回false

[英]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_dbmysql_connect.php不可見。

您似乎沒有將$stmt傳遞給函數,我建議您在scope上閱讀此內容。

暫無
暫無

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

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