2012-01-15 104 views
0

我想知道是否有人可以帮助我。PHP保存记录错误消息

我想把管理表格放在一起,可以修改成员记录。

我放在一起的代码如下,我可以成功从mySQL数据库检索记录,如果没有提供的电子邮件地址的记录,就会收到相应的消息。

<?php 
mysql_connect ("host","user","password") or die (mysql_error()); 
mysql_select_db ("database"); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (isset($_POST['search'])) { 
     $searchemailaddress = $_POST['searchemailaddress']; 
     $sql = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'"); 
    if (mysql_num_rows($sql) == 0) 
     $msg = 'There are no member records set up with this email address, please try again!'; 
    } 
    while ($row = mysql_fetch_array($sql)){ 
     $emailaddress = $row['emailaddress']; 
     $forename = $row['forename']; 
     $surname = $row['surname']; 
     $subscriptionexpiration = $row['subscriptionexpiration']; 
    } 
    } 
    if (isset($_POST['update'])) { 
     $emailaddress = $_POST['emailaddress']; 
     $forename = $_POST['forename']; 
     $surname = $_POST['surname']; 
     $subscriptionexpiration = $_POST['subscriptionexpiration']; 
     $sql = mysql_query("UPDATE `userdetails` SET `emailaddress` = '$emailaddress', `forename` = '$forename',`surname` = '$surname',`subscriptionexpiration` = '$subscriptionexpiration' LIMIT 1"); 
     $msg = 'This members records have been successfully updated!'; 
    } 
?> 
<html> 
<head> 
<title>Search the Database</title> 
<style type="text/css"> 
<!-- 
.style1 {font-family: Calibri 
} 
.style9 { font-family: Calibri; 
    font-size: 24px; 
    background-color: #78AFC5; 
} 
.style7 { 
    font-family: Calibri; 
    font-size: 16px; 
    background-color: #FFFFFF; 
} 
--> 
</style> 
</head> 
<body> 

    </p> 
    <p class="style1">&nbsp;</p> 
<div align="center"><span class="style9">Search &amp; Amend User Records </span></div> 
<p class="style7"><span class="style10"> 
    <?php 
if (isset($msg)) // this is special section for 
// outputing message 
{ 
?> 
</span> 
<p class="style7"> 
    <?=$msg?> 
    <p class="style7"><span class="style10"> 
    <?php 
} 
?> 
    </span> 
    <form action="searchandamend.php" method="post"> 
    <table width="393" border="1"> 
    <tr> 
     <td width="161"><span class="style1">Search:</span></td> 
     <td width="207"><span class="style1"> 
     <input name="searchemailaddress" type="text" id="searchemailaddress" size="25"/> 
     </span></td> 
    </tr> 
    <tr> 
     <td><span class="style1">Email Address:</span></td> 
     <td><span class="style1"> 
     <input name="emailaddress" type="text"value="<?php echo $emailaddress;?>" size="25"/> 
     </span></td> 
    </tr> 
    <tr> 
     <td><span class="style1">First Name:</span></td> 
     <td><span class="style1"> 
     <input name="forename" type="text" value="<?php echo $forename;?>" size="20"/> 
     </span></td> 
    </tr> 
    <tr> 
     <td><span class="style1">Surname:</span></td> 
     <td><input name="surname" type="text" value="<?php echo $surname;?>" size="20"/></td> 
    </tr> 
    <tr> 
     <td><span class="style1">Subscription Expiry Date:</span> </td> 
     <td><input name="subscriptionexpiration" type="text" id="subscriptionexpiration" value="<?php echo $subscriptionexpiration;?>" size="10"/></td> 
    </tr> 
    </table> 
    <p><br/> 
    <input type="submit" name="search" value="Search Records"> 
    <input name="update" type="submit" value="Update Record"> 
</p> 
</form> 
</body> 
</html> 

但是,当我尝试更改记录的任何部分时遇到问题。更改已保存,并且我收到了正确的“记录更新”消息,但我也收到此错误: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homepages/2/d333603417/htdocs/development/searchandamend.php on line 14第14行是我的代码中的此行:while ($row = mysql_fetch_array($sql)){我一直在研究这一段时间,现在我只能似乎无法解决问题所在。

我只是想知道是否有人可以看看这个请让我知道我哪里出了问题。

非常感谢

+1

好像'[ '搜索']'是,当你执行更新设置$ _ POST均匀。 – Cyclonecode 2012-01-15 15:14:26

+0

'mysql_real_escape_string()'包含在SQL查询字符串中的变量。你在这里有一个巨大的安全漏洞! – 2012-01-15 16:47:40

回答

0

所有,抽空诚挚的感谢回复我的帖子。

看了这多一点,并考虑到你所说的,我想出了以下的工作正常。

if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    if (isset($_POST["search"])) 
    { 
$searchemailaddress = $_POST['searchemailaddress']; 
$result = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'"); 
if (mysql_num_rows($result) == 0) 
$msg = 'There are no member records with the email address you have provided, please try again!'; 
else 
while ($row = mysql_fetch_array($result)){ 
$emailaddress = $row['emailaddress']; 
$forename = $row['forename']; 
$surname = $row['surname']; 
$subscriptionexpiration = $row['subscriptionexpiration']; 
$msg = 'Record retrieved!'; 
} 
} 

if (isset($_POST["update"])) 
    { 
$emailaddress = $_POST['emailaddress']; 
$forename = $_POST['forename']; 
$surname = $_POST['surname']; 
$result = mysql_query("UPDATE `userdetails` SET `emailaddress` = '$emailaddress', `forename` = '$forename',`surname` = '$surname', `subscriptionexpiration` = '$subscriptionexpiration' LIMIT 1"); 
$msg = 'This members record has been successfully updated!'; 
} 
} 

亲切的问候

+0

@ IRHM-尝试缩进你的代码,这将使它更容易阅读。如果这是正确的解决方案,你应该接受你自己的答案。 – Cyclonecode 2012-01-16 08:04:31

0

是否有可能连接没有被成功创建,你正试图从返回的布尔提取和阵列?

1
if (mysql_num_rows($sql) == 0) 

您未打开支架!

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (isset($_POST['search'])) { 
     $searchemailaddress = $_POST['searchemailaddress']; 
     $sql = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'"); 
     if (mysql_num_rows($sql) == 0) 
      $msg = 'There are no member records set up with this email address, please try  again!'; 
     } 
    while ($row = mysql_fetch_array($sql)){ 
     $emailaddress = $row['emailaddress']; 
     $forename = $row['forename']; 
     $surname = $row['surname']; 
     $subscriptionexpiration = $row['subscriptionexpiration']; 
    } 
} 

} 这使得isset($_POST['search'])如果块到while前关闭。

你可能想是这样的:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (isset($_POST['search'])) { 
     $searchemailaddress = $_POST['searchemailaddress']; 
     $sql = mysql_query("select * from userdetails where emailaddress like '$searchemailaddress'"); 
     if (mysql_num_rows($sql) == 0) { 
      $msg = 'There are no member records set up with this email address, please try  again!'; 
     } 
     while ($row = mysql_fetch_array($sql)) { 
      $emailaddress = $row['emailaddress']; 
      $forename = $row['forename']; 
      $surname = $row['surname']; 
      $subscriptionexpiration = $row['subscriptionexpiration']; 
     } 
    } 
}