0

search.php スクリプトを mySQL で動作させる方法を見つけようとしています。表示される情報を取得できません。どこに問題があるのか​​ わかりません。

ページ1:

<form action="search_result.php" method="GET">
    <input type="text" name="reg" />
    <input type="submit" value="Search" />
</form>

ページ2:

<?php
$host="localhost";
$username="XXXXXXXXXXX";
$password="XXXXXXXXXXX";
$db_name="XXXXXXXXXXXX";
$tbl_name="reg_add";
mysql_connect("$host", "$username", "$password") or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


$record = $_POST['record']; // if coming from e.g. a form
$result=mysql_query(" SELECT * FROM reg_add WHERE reg='" . mysql_real_escape_string($record) . "'");


$row = mysql_fetch_assoc($result);
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$reg = $row['reg'];
?>

<input  name="reg" value="<? echo "$record" ?>">

<input  name="first_name" value="<? echo "$first_name" ?>">

<input  name="last_name" value="<? echo "$last_name" ?>">
4

3 に答える 3

0

mysql_result()の構文が間違っています。マニュアルによると、

string mysql_result(resource $ result、int $ row [、mixed $ field = 0])

したがって、それを使用する正しい方法は次のようになります

mysql_result($result, 1, "first_name");
于 2012-04-25T23:30:13.310 に答える
0

フォームはメソッド GET であり、PHP ではこれを使用します。

$record = $_POST['record']; // if coming from e.g. a form

フォームにメソッド GET がある場合、どのように POST['record'] を取得しますか?

フォームを次のように変更する必要があると思います。

method="POST" 

または、php の $record を次のように変更します。

$record = $_GET['record'];

このバージョンを試してください:

あなたが形成する:

    <form action="search_result.php" method="POST">
    <input type="text" name="reg" id="reg" />
    <input type="submit" name="Submit" id="Submit" value="Search" />
</form>

search_result.php :

<?php

$host       ="localhost";
$username   ="XXXXXXXXXXX";
$password   ="XXXXXXXXXXX";
$db_name    ="XXXXXXXXXXXX";
$tbl_name   ="reg_add";

/* Connect to MySQL database */
mysql_connect("$host", "$username", "$password") or die("Error connecting to database");
mysql_select_db("$db_name")or die("Error selecting database");

$error = '';

if (isset($_POST['Submit'])) {


    if (!empty($_POST['reg'])) {

        $record = $_POST['reg']; // if coming from e.g. a form

        $query = mysql_query("SELECT * FROM reg_add WHERE reg='" . mysql_real_escape_string($record) . "'");
        $result = mysql_num_rows($query);

        if ($result != 0) {

            $row = mysql_fetch_array($query);

            $first_name = $row['first_name'];
            $last_name = $row['last_name'];
            $reg = $row['reg'];

        } else {

            $error = 'No result have been found!';

        }

    } else {

        $error = 'You have not entered the search field, <a href="javascript:history.back(1)">Go back</a>.';

    }
}

if (!empty($error)) { echo $error; } 
?>


<input  name="reg" value="<? echo $record; ?>">

<input  name="first_name" value="<? echo $first_name; ?>">

<input  name="last_name" value="<? echo $last_name; ?>">
于 2012-04-26T08:30:33.977 に答える
0
mysql_connect("$host", "$username", "$password") 

あなたの問題ではありませんが、変数を引用符で囲む必要はありません:

mysql_connect($host, $username, $password);
mysql_select_db($db_name);

変数を$recordどこかに設定する必要があります。

$record = $_POST['record']; // if coming from e.g. a form
$result=mysql_query(" SELECT * FROM reg_add WHERE reg='" . mysql_real_escape_string($record) . "'");

これは間違っています:

$first_name=mysql_result($result,"first_name");
$last_name=mysql_result($result,"last_name");
$reg=mysql_result($result,"reg"); 

そして、次のようにする必要があります。

$row = mysql_fetch_assoc($result);
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$reg = $row['reg'];

また、mysql_*関数はもう使用しないでください。mysqli_*または PDOを使用します。

また、何かがうまくいかない場合はmysql_error()、クエリを実行してエラーを確認できることを覚えておいてください。

于 2012-04-25T23:19:53.103 に答える