-1

HTMLフォームからURLを介してこのスクリプトに渡されたフォームから最初に「クエリ」を取得する単純な検索を構築しようとしています。スクリプトを実行すると、次の出力が得られます:リソースID#140リソースID#141リソースID#142。なぜこの出力が得られるのですか、それはどういう意味ですか?

補足私は、各変数の出力を確認する方法として「エコー」を使用しています。

<?php 
//connect to database
mysql_connect("localhost", "user", "password") or die("Error connecting to database: " .mysql_error());

mysql_select_db("dataBase") or die(mysql_error());

?>
<?php
$query = $_GET['query']; 
// gets value sent over search form

$user_id = mysql_query("SELECT id FROM users WHERE email = '$query'") or die(mysql_error());
echo $user_id;

$account_id = mysql_query("SELECT 'account_id' FROM accounts_users WHERE 'user_id' LIKE ('$user_id')") or die(mysql_error());
echo $account_id;

$user_name = mysql_query("SELECT 'account_name' FROM accounts WHERE 'id' LIKE ('$account_id')") or die(mysql_error());
echo $user_name;    
?>
4

3 に答える 3

2

これは結果を印刷する方法ではありません。このメソッドmysql_queryは、実際に結果を出力するためにループ内で使用する必要のあるリソースを返します。たとえば、公式ドキュメントページの2番目の例でループします。

PS$query = $_GET['query'];このステートメントを使用すると、SQLインジェクションの問題が発生する可能性があります。

于 2012-05-03T08:22:11.973 に答える
1

これに似たものを試してください-最初の「SELECT」クエリの後:

    while($user_id_obj = mysql_fetch_object($user_id))
    {
      echo $user_id_obj->id;
    }
于 2012-05-03T08:27:22.687 に答える
0

これは2つの方法で可能になる可能性があります。どちらがあなたにとって有用であるかはあなたの要件に依存します。

1.クエリに結果として単一の値が含まれている場合は、コードに変更を加えた次のコードが役立ちます。

<?php 
//connect to database
mysql_connect("localhost", "user", "password") or die("Error connecting to database: " .mysql_error());

mysql_select_db("dataBase") or die(mysql_error());

?>
<?php
$query = $_GET['query']; 
// gets value sent over search form

$result_user = mysql_query("SELECT id FROM users WHERE email = '$query'") or die(mysql_error());
if (!$result_user) {
    die('Could not query:' . mysql_error());
}
$user_id=mysql_result($result_user,0); // outputs first user's id
echo $user_id;
$result_accountuser = mysql_query("SELECT 'account_id' FROM accounts_users WHERE 'user_id' LIKE ('$user_id')") or die(mysql_error());
if (!$result_accountuser) {
    die('Could not query:' . mysql_error());
}
$account_id=mysql_result($result_accountuser,0); // outputs first accounts_users's account_id
echo $account_id;
$result_account = mysql_query("SELECT 'account_name' FROM accounts WHERE 'id' LIKE ('$account_id')") or die(mysql_error());
if (!$result_account) {
    die('Could not query:' . mysql_error());

}
echo mysql_result($result_account,0); // outputs first accounts's account_name
?>

2.または、クエリに複数の結果または複数の行が含まれている場合は、コードの変更に従うと役立ちます

<?php 
//connect to database
mysql_connect("localhost", "user", "password") or die("Error connecting to database: " .mysql_error());

mysql_select_db("dataBase") or die(mysql_error());

?>
<?php
$query = $_GET['query']; 
// gets value sent over search form

$result_user = mysql_query("SELECT id FROM users WHERE email = '$query'") or die(mysql_error());
        while($row=mysql_fetch_array($result_user))
        {
                $user_id = $row['id'];
                echo    $user_id;
        }


$result_accountuser = mysql_query("SELECT 'account_id' FROM accounts_users WHERE 'user_id' LIKE ('$user_id')") or die(mysql_error());
        while($row=mysql_fetch_array($result_accountuser))
        {
                $account_id = $row['account_id'];
                echo $account_id;

        }

$result_account = mysql_query("SELECT 'account_name' FROM accounts WHERE 'id' LIKE ('$account_id')") or die(mysql_error());
        while($row=mysql_fetch_array($result_account))
        {
                echo $row['account_name'];

        }

?>
于 2012-05-03T08:41:16.407 に答える