2016-10-01 11 views
-2

私は自分自身を教えていて、リアルタイムで実行するためにmysqli関数を入力できるツールを作ろうとしています。なぜ "mysqli_stat()がパラメータ1がmysqliであると予期していますか"というエラーが発生することがありますか?

これは私が始めたhtmlファイルです。

<form action="index.php" method="post"> 
<input type="text" placeholder="User Name" name="username"> 
<input type="password" placeholder="Password" name="userpassword"> 
<input type="submit" value="Connect"> 
</form> 

これは接続して、最初の機能を要求するPHPファイルです。

最後に、関数を実行するはずのphpファイルですが、エラーが表示されます。入力している関数は 'mysqli_stat($ conn);'です。他の機能は動作しません。

<?php 
$operation = trim($_POST['operation']); 
$conn = trim($_POST['conn']); 
eval($operation); 
?> 
<form action="action.php" method="post"> 
<input type="text" placeholder="MySQLi Operation" name="operation"> 
<input type="submit" value="Ok"> 
</form> 
+0

このコードを実行すると、 '$ conn'の実行時の値は何ですか?どの文字列をフォームから送信していますか?エラー(メッセージ全体を読む場合)は、文字列だけでなくリソースオブジェクトが必要であることを伝えているようです。 – David

+2

あなたは何をしているのか分かりませんが、驚くほど怖い何かをしています。 –

答えて

1

ハンドルはフォーム要求によってresourceに渡すことはできません。リテラル(文字列、整数)は$_POSTまたは$_GETの変数として送信できます。オブジェクトとリソース(データベース、ファイルI/Oハンドル)はサポートされません。

あなたの第二の抜粋から結果のHTMLを見ていた場合、あなたが見たい:

<input type="hidden" value=resource id #2 name="conn"> 
           ↑↑↑↑↑↑↑↑↑↑ 

あなたが新たにテスト・スクリプトにmysqliの$connを設定する必要があります。 (テスト用にはうまくいきますが、実動コードでそのような構文を使用しないでください)

+0

私はそれを理解しています '$ conn = mysqli_connect( "localhost"、$ username、$ userpassword);'オブジェクトを作成します。文字列値を持つ変数ではありませんか?そのオブジェクトは渡されていませんが、代わりに文字列を渡そうとしていますか? –

+0

はい。 'echo $ conn'はリソース/ハンドルを無駄な文字列にします。ああ、私は気づきました。文字通り '' $ conn''文字列も送ってきました。 - mysqliの場合、おそらくオブジェクトを取得している可能性があります。その結果、文字列に出力/キャストしようとするとエラーメッセージが表示されます。 – mario

+0

apc_storeとapc_fetchは正しい方法ですか、少なくともオブジェクトを渡す有効な方法ですか? –

関連する問題