ログインスクリプトのオブジェクト指向とWebサイトのチェックに最善を尽くしています。そのため、「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を動作させていますが、関数内で何かを実行しようとすると失敗します。
答えを探すために数時間検索しましたが、何も見つかりませんでした。あなたからの便りを楽しみにしています!よろしくお願いします。
〜トラビス