-2

電子メールがセッション電子メールと等しい姓名でデータベース テーブルを更新したいのですが、電子メールがユーザーのサインインした電子メールと等しいテーブルを更新できません。助けてください。

<?php

 session_start();

 if(!session_is_registered(email)){

header("location: login.html");

}?>
<?php
echo"<a href = logout.php> Logout </a>";  
?>
<?php
include('config.php');

session_start();
if(isset($_SESSION['email'])) {

echo "Welcome &nbsp;&nbsp;&nbsp;".$_SESSION['email']."";

} 


 ?>
 <?php
  $dbhost = 'localhost';
   $dbuser = 'user';
    $dbpass = 'password';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  if(! $conn )
  {
  die('Could not connect: ' . mysql_error());
}

  $sql="UPDATE nametable SET fname='$fname', lname='$lname' WHERE email='" . $_SESSION      ['email'] . "'";

   echo $row['fname']." - ".$row['lname']. "<br />";
      if($result) {
       echo "success"; 
   } else { 
         echo "no success"; 
    }

  mysql_select_db('db');
  $retval = mysql_query( $sql, $conn );
  if(! $retval )
   {
   die('Could not update data: ' . mysql_error());
}
  echo "Updated data successfully\n";
 mysql_close($conn);

 ?>

この ID 更新される姓名に応じて送信されるデータ 他のタグは気にしないでください 何が更新されるかを把握するためにこれをまとめただけです上記のコードは、私が間違っていたことを教えてください

    <html>
  <head>
    <title>Update a Record in MySQL Database</title>
   </head>
   <body>

  <form method="post" action="update1.php">
    <table width="400" border="0" cellspacing="1" cellpadding="2">
    <tr>
    <td width="100"> first name</td>
    <td><input name="fname" type="text" id="fname"></td>
   </tr>
   <tr>
   <td width="100">last name</td>
   <td><input name="lname" type="text" id="lname"></td>
  </tr>
 <tr>
  <td width="100"> </td>
 <td> </td>
   </tr>
    <tr>
             <td width="100"> </td>
      <td>
    <input name="submit" type="submit" id="submit" value="submit">
     </td>
     </tr>
       </table>
       </form>

       </body>
   </html>
4

2 に答える 2

0

""まず、 SQL の文字列をクォートで囲む必要があります

$sql="UPDATE nametable SET fname='$fname', lname='$lname' WHERE email='" . $_SESSION      ['email'] . "'";

する必要があります

$sql='UPDATE nametable SET fname="'.$fname.'", lname="'.$lname.'" WHERE email="'.$_SESSION['email'].'"';

次に、クエリをまったく実行していません。次のように考えてください

  echo $row['fname']." - ".$row['lname']. "<br />";
      if($result) {
       echo "success"; 
   } else { 
         echo "no success"; 
   }

本当に意味 :

$result = mysql_query($sql);
if (mysql_affected_rows()>-1) {
   // success
   // do here what you want
}
于 2013-09-23T01:20:06.240 に答える
0

session_is_registered 関数は既に廃止されていると思うので、代わりに

session_is_registered('email')

あなたは使用したいかもしれません:

if ( isset( $_SESSION['email'] ) ){}

また、php の 1 ページには、session_start() 関数を 1 つしか持つことができません。

それでも機能しない場合は、$sql 変数を出力してコードをデバッグしてみてください。

それが役立つかどうか教えてください。

于 2013-09-23T01:17:35.393 に答える