0

私は(html)を持っています

input type="text" name="input"
textarea name="output"

次に、いくつかのテーブル、名と姓があります。入力領域に名を挿入すると、出力領域に姓を表示したいと思います。以下の PHP クエリが機能しません。

$input = $_POST['input'];
$select = mysql_query("SELECT first_name FROM table WHERE input=$input");
$req = mysql_fetch_array($select);
4

4 に答える 4

3

挿入する値を囲む引用符がありません。使用する

 input='$input'

クエリでエラー チェックを行っていないため、このような場合、問題は黙って中断されます。適切なエラー チェックを行い、詳細なメッセージを取得するに は、この参照質問のマニュアルを参照してください。mysql_query()

また、表示するコードはSQL インジェクションに対して脆弱です。mysql_real_escape_string()挿入するすべての文字列データに対して、ライブラリ (この場合は ) の適切なサニテーション メソッドを使用するか、PDO および準備済みステートメントに切り替えます。

現在のコードを使用した例:

# Escape string input
$input = mysql_real_escape_string($_POST['input']);

# Run query
$select = mysql_query("SELECT first_name FROM table WHERE input='$input'");

# Check for errors  
if (!$select)
 { trigger_error("mySQL error: ".mysql_error()); 
   die();
 }
于 2012-02-28T10:36:24.230 に答える
2

いくつかの問題があります。

まず、あなたのテーブルはおそらく呼び出されていませんtableが、何か他のものです。実際に何らかの理由で呼び出された場合は、予約語であるtableため、バッククォートで囲む必要があります。tableしかし、予約語にならないように名前を変更した方がはるかによいでしょう。

第二に、ユーザー入力データを正しくエスケープしていません。mysql_real_escape_stringこの目的での使用を検討できます。

$input = mysql_real_escape_string($_POST['input']);

最後に、SQL 文字列内のユーザー テキストを引用する必要があります。

$select = mysql_query("SELECT first_name FROM `table` WHERE input='$input'");

または、パラメーター化されたクエリを使用することもできます。

于 2012-02-28T10:35:41.717 に答える
1

あなたがfirst_nameに応じてlast_nameを取得したいと言ったように、クエリは次のようになります

$input = $_POST['input'];
$select = mysql_query("SELECT last_name FROM table WHERE first_name = '".$input."'");
$req = mysql_fetch_array($select);

置換よりも高速であるため、文字列内の変数を連結してみてください。

于 2012-02-29T10:31:27.730 に答える
1

お役に立てれば

//PHP
$firstname='';
$lastname='';

if(isset($_POST['go']))
{
   $firstname=$_POST['firstname'];
   $records = mysql_query("SELECT last_name FROM
   table WHERE firstname='$firstname'");

   if(mysql_num_rows ==1)
   {
       while($row=mysql_fetch_array($records))
       {
          $lastname=$row['last_name'];
       }
    }
}

//HTML
echo"<form method='post' >
echo" <input type='text' name='firstname' value='$firstname' />";
echo"<input type='submit' value='Go' /> ";
echo" <input type="text" name='lastname' value='$lastname' />";
echo"</form>";
于 2012-02-28T11:09:44.153 に答える