2012-01-15 18 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

について[ '検索']'アップデートを実行しても設定されています。 – Cyclonecode

+0

mysql_real_escape_string()は、SQLクエリ文字列に含める変数です。あなたはここに*巨大なセキュリティホールを持っています! –

答えて

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!'; 
} 
} 

種類は、それは `$ _POSTのように思える

+0

@ IRHM-あなたのコードをインデントしてみると、読みやすくなります。これが正しい解決策であれば、あなた自身の答えを受け入れるべきです。 – Cyclonecode

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']; 
    } 
} 

} ブロック場合、これはwhile前に閉じるようにisset($_POST['search'])になります。

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']; 
     } 
    } 
} 
関連する問題