2011-10-28 17 views
3

誰かが私を助けてくれるかどうかは疑問です。フォームを使用してMySQLを検索して更新する

私は、mySQLデータベースからメンバーの詳細を検索し、同じフォーム上の所定のテキストボックスに表示されるように結果を取得し、返信を返すために使用できるフォームをまとめようとしていますデータベースに転送します。

次のように私が使用しているコードは次のとおりです。

PHP

<?php 
require("phpfile.php"); 

// Opens a connection to a MySQL server 

$connection=mysql_connect ("hostname", $username, $password); 
if (!$connection) { die('Not connected : ' . mysql_error());} 

// Set the active MySQL database 

$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
die ('Can\'t use db : ' . mysql_error()); 
} 

$email = $_POST['email']; 
$sql = mysql_query("SELECT * FROM userdetails WHERE emailaddress like '%$emailaddress%'"); 

while($row = mysql_fetch_array($sql)) 
{ 
echo $row['forename']; 
echo $row['surname']; 
echo "<br />"; 
} 
?> 

HTMLのFORM

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
</head> 
<body> 
<form action="search.php" method="post">  
    <p>Search: 
    <input name="emailaddress" type="text" id="emailaddress" /> 
    <br />  
    <input type="submit" name="submit" value="Submit" />  
</p> 
    <p> 
    <label> 
    <input name="forename" type="text" id="forename" value="<?php echo $forename; ?>" /> 
    </label> 
    </p> 
    <p> 
    <input name="surname" type="text" id="surname" value="<?php echo $surname; ?>" /> 
    </p> 
    <p>&nbsp; </p> 
</form> 
</body> 
</html> 

私はを検索するための電子メールアドレスを使用しています私が持っている問題は、私が持っているものよりもすべてのレコードが取り出されるということですのための詳細をひっくり返して、結果はフォームの姓と名字フィールドに表示されません。

誰かが、おそらく私が間違っ

をやっているものを私に示してもらえ種類は

答えて

2

...しかし、あなたは、それは次のようになります白のメールを更新する送信ボタンを押した場合:

if(isset($_REQUEST['submit'])) { 
$fname = mysql_real_escape_string($_POST['forename']); 
$sname = mysql_real_escape_string($_POST['surname']); 
$emai= mysql_real_escape_string($_POST['email']); 
mysql_query(UPDATE `table` SET `forename` = $fname, `surname` = $sname, `email`=$email WHERE id = `id`); 
} 
0

についてあなたは変数「$メール」ではない「$のEMAILADDRESS」と呼ばれてきました。以前のクエリでは、すべてのメールアドレスを見つける "%%"のようなメールアドレスを検索していました。

また、SQLインジェクションを調べる必要があります。 Webアプリケーションに影響を及ぼす最も一般的なセキュリティリスクの1つですが、保護が非常に簡単です。私はしばらくの間、あなたのラインを置き換える、詳細に説明しなくなります。

$email = $_POST['email']; 

で:http://php.net/manual/en/security.database.sql-injection.php

+0

私はのように明らかにされていませんでした場合irhmは本当に – faq

+0

こんにちは、謝罪を望んでいるかについての痛みではないイム私はされていたはずです。私は、ユーザーの電子メールアドレスを入力するためのフォームを持っています。次に、その情報をmySQLデータベーステーブルに送信して、適切なレコードのforenameとsurnameを取得します。私は検索された姓と姓の値を同じ検索フォーム上の姓と名字ボックスに入力したいと思います。私はこれを基にして、同じフォームを使用してユーザーレコードを変更し、修正された情報をデータベーステーブルに保存し直します。私はこれが役立つことを願っています種類: – IRHM

+0

クエリの変数名を '$ email'に変更しましたか? –

0
  1. あなたがする必要があります

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

    ここではSQLインジェクションについての詳細ですPOST入力をエスケープしてから使用してください。 MySQLを使用している場合は、mysql_real_escape_stringの()関数を使用することがあります。

    $emailaddress = mysql_real_escape_string($_POST['email']) 
    
  2. あなたは、各フォーム入力で値パラメータを設定取得した値でフォームを埋めることがあります。 $姓が設定されている:

    <input name="surname" type="text" id="surname" value="<?php echo isset($surname) ? htmlentities($surname) : null; ?>" /> 
    

あなたは、上記のようにラインを読むことができる:セキュリティ上の理由から、出力はHTMLエンティティを変換することを確認してください?その場合は、htmlentitiesと出力を適用します。それ以外の場合はnullを返します。

関連する問題