2011-10-28 28 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表單

<!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」。更改您的查詢是:

SELECT * FROM userdetails WHERE emailaddress like '%$email%' 

此前,查詢在尋找像「%%」的電子郵件地址 - 這會發現每一個電子郵件地址。

另一方面,您必須考慮SQL注入。它是影響Web應用程序的最常見安全風險之一,但很容易防範。我就不詳細解釋,但是,就目前而言,替換你的行:

$email = $_POST['email']; 

有了:

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

以下是關於SQL注入的更多信息:http://php.net/manual/en/security.database.sql-injection.php

+0

我不是瘡什麼irhm真正想要 – faq

+0

嗨,道歉,如果我沒有這麼清晰我應該去過的。我有一個表單,可以輸入用戶的電子郵件地址,然後將該信息提交到mySQL數據庫表以檢索相關記錄的姓和名。我想要檢索的姓氏和姓氏值在同一搜索表單上填寫姓名和姓氏文本框。然後,我將在此基礎上使用相同的表單來更改用戶記錄,並將修改後的信息保存回數據庫表。我希望這有幫助。親切的問候 – IRHM

+0

你是否已將查詢中的變量名稱更改爲'$ email'? – 2011-10-28 15:26:13

0
  1. 你應該在使用它之前逃避POST輸入。如果你使用MySQL,你可以使用mysql_real_escape_string()函數:

    $emailaddress = mysql_real_escape_string($_POST['email']) 
    
  2. 您可以填充表單與檢索到的值設定在每個表單中輸入的值參數。出於安全考慮,確保輸出轉換HTML實體:

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

你可能看了上面的線爲:爲$姓設置?如果是這樣,應用htmlentities和輸出。否則,返回null。