Php 搜寻及;使用表单更新MySQL

Php 搜寻及;使用表单更新MySQL,php,mysql,Php,Mysql,我不知道是否有人能帮我 我正在尝试组合一个表单,我可以使用它从mySQL数据库中搜索成员详细信息,检索结果,使它们出现在同一表单上的预定义文本框中,并进行更新以发送回数据库 我使用的代码如下所示: PHP <?php require("phpfile.php"); // Opens a connection to a MySQL server $connection=mysql_connect ("hostname", $username, $password); if (!$

我不知道是否有人能帮我

我正在尝试组合一个表单,我可以使用它从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 />"; 
} 
?> 

您已经调用了变量“$email”而不是“$emailaddress”。将您的查询更改为:

SELECT * FROM userdetails WHERE emailaddress like '%$email%'
以前,您的查询是搜索一个类似“%%”的电子邮件地址,它将查找每个电子邮件地址

另一方面,您必须研究SQL注入。这是影响web应用程序的最常见的安全风险之一,但很容易防范。我不会详细解释,但目前,请更换您的线路:

$email = $_POST['email'];
与:

以下是有关SQL注入的更多信息:

  • 在使用POST输入之前,应先将其转义。如果您使用的是MySQL,则可以使用MySQL\u real\u escape\u string()函数:

    $emailaddress = mysql_real_escape_string($_POST['email'])
    
  • 您可以使用检索到的值填充表单,并在每个表单输入中设置值参数。出于安全原因,请确保输出将转换HTML实体:

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

    。。。但是,如果您按“提交”按钮更新白色电子邮件,它应该如下所示:

    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`);
    }
    

    我对厄姆真正想要的东西并不生气,如果我没有像我应该说的那样清楚,我会道歉。我有一个表单,在其中输入用户的电子邮件地址,然后将该信息提交到mySQL数据库表,以检索相关记录的名字和姓氏。我希望检索到的名字和姓氏值填充同一搜索表单上的名字和姓氏文本框。然后,我将在此基础上使用相同的表单对用户记录进行更改,并将修改后的信息保存回数据库表。我希望这有帮助。您是否将查询中的变量名更改为“$email”?为了方便起见,我刚刚将所有内容都称为“emailaddress”,这样我就可以很有希望地实现这一点,并花一些时间来理解这个过程。
    <input name="surname" type="text" id="surname" value="<?php echo isset($surname) ? htmlentities($surname) : null; ?>" />
    
    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`);
    }