【问题标题】:PHP Update MySQL table using HTML formPHP 使用 HTML 表单更新 MySQL 表
【发布时间】:2016-08-03 08:41:51
【问题描述】:

我正在尝试通过在 HTML 页面中使用表单来更新我的 MySQL 表。

这是我的 PHP 代码

    <?php
 ob_start();
 session_start();
 require_once 'dbconnect.php';

 if( !isset($_SESSION['client']) ) {
  header("Location: homepage_login.php");
  exit;
 }
 // select loggedin users detail
 $res=mysql_query("SELECT * FROM clients WHERE client_id=".$_SESSION['client']);
 $userRow=mysql_fetch_array($res);

 if( isset($_POST['btn-book']) ) { 

 $sql="UPDATE appointments SET date='$slot_date', line='$slot_line', reason='$reason' WHERE id='$id'";
 $result=mysql_query($sql);

 if($result){
echo "Successful";
}

else {
echo "ERROR";
} }

?>

还有我的 HTML 表单

<form action"" method"post">

       <p>Date: <input type="text" id="datepicker" name="date"></p>

       <br>
       <br>
       Select a line:
       <ol id="selectable" name="line">
  <li class="ui-widget-content">Line 1</li>
  <li class="ui-widget-content">Line 2</li>
  <li class="ui-widget-content">Line 3</li>
  <li class="ui-widget-content">Line 4</li>
  <li class="ui-widget-content">Line 5</li>
  <li class="ui-widget-content">Line 6</li>
  <li class="ui-widget-content">Line 7</li>
</ol>
<br>
<br>

     <p>Reason for appointment: <input type="text" name="reaosn"></p>

        <div class="form-group">
             <button type="submit" class="btn btn-block btn-primary" name="btn-book">Book</button>
            </div>

            </form>

顺便说一句,这些在同一页上。所以我需要做的是当有人填写表格并点击提交按钮时,PHP 代码将更新我的 MySQL 表在特定的已创建记录上。

我不确定我是否需要以某种方式指定要更新的记录,或者我是否完全搞砸了实际更新我的表。

所以,我的问题是:

如何使用 HTML 表单和 PHP 代码更新表中的特定记录?

【问题讨论】:

  • 更新sql中的查询。只需通过..w3schools.com/php/php_mysql_update.asp
  • 我不确定实际的问题是什么?你有什么错误吗?
  • 我没有收到任何错误,只是我的代码不会更新表中的记录
  • $sql="UPDATE appointments SET date='$slot_date', line='$slot_line', reason='$reason' WHERE id='$_SESSION[client]'"; 我认为你的 $id 和会话名称相同。如果相同,请使用上面的代码。
  • 它不会更新。你还没有提到$id

标签: php html mysql forms


【解决方案1】:

只需回显表单上的所有值

例如:&lt;p&gt;Date: &lt;input type="text" id="datepicker" name="date"&gt;&lt;/p&gt; 转换为 &lt;p&gt;Date: &lt;input type="text" id="datepicker" value="&lt;?php echo $result['date']; ?&gt; " name="date"&gt;&lt;/p&gt;

【讨论】:

    【解决方案2】:

    你必须像这样改变形式

    <form method="post" action="same_page.php">  
    

    使用以下代码更改 php。

    <?php
    ob_start();
    session_start();
    require_once 'dbconnect.php';
    
    if( !isset($_SESSION['client']) ) {
     header("Location: homepage_login.php");
     exit;
    }
    // select loggedin users detail
    $res=mysql_query("SELECT * FROM clients WHERE client_id='$_SESSION[client]'");
    $userRow=mysql_fetch_array($res);
    $id=$userRow['client_id'];
    
    if( isset($_POST['btn-book']) ) { 
    
     $slot_date= $_POST['date'];
     $reason=$_POST['reason'];
     $slot_line=$_POST['line'];
    
     $sql="UPDATE appointments SET date='$slot_date', line='$slot_line', reason='$reason' WHERE id='$id'";
     $result=mysql_query($sql);
    
     if($result){
      echo "Successful";
     }else {
      echo "ERROR";
     } 
    }
    
    ?>
    

    【讨论】:

    • 危险:此代码为vulnerable to XSS 用户输入(如PHP_SELF)在插入HTML文档之前需要转义!。
    • 感谢您的帮助,但现在当我点击提交时,我的页面显示找不到网址?我不确定它是否正在尝试查找我尚未创建/定义的新页面或其他内容?
    • 请在表单中填写的操作中输入您的相同页面网址。
    • @Isabella 你的应该是 &lt;form action"" method="post"&gt; 而不是 Jees 添加的内容,因为他会将你定向到 URL same_page.php
    • 感谢您的所有帮助,我第一次尝试使用上面的代码就可以了。然后我又试了一次,它停止工作了?现在它出现了消息 ERROR,这显然是 echo 命令...
    猜你喜欢
    • 2013-09-30
    • 1970-01-01
    • 2014-03-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2014-01-30
    相关资源
    最近更新 更多