【问题标题】:Update mysql database with php用php更新mysql数据库
【发布时间】:2013-05-29 16:52:40
【问题描述】:

我想更新我的数据库和这段代码,以便在另一个表上正常工作,但在这里我有一个错误,我看到了这条消息:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 'WHERE id='588'' 附近使用正确的语法

<?php
$sel_item = "SELECT * FROM `employees` where id=".$_GET['emp_id'];
$done_item = mysql_query($sel_item);
$get_item = mysql_fetch_array($done_item);

if(isset($_POST['edit']) ){
    $upd= "UPDATE `employees` SET 
    `emp_no`='".$_POST['name']."',
    WHERE `id`='".$_POST['id']."";
    $do_upd = mysql_query($upd) or die(mysql_error());
}
?>


<form action="" method="post" enctype="multipart/form-data">

         <table class="append-row" width="100%" border="0" bgcolor="#006699"  height="60px" align="left" 
        style="padding:0 30px;">
          <tr>

           <td><input type="text" name="name" id="name" placeholder="name"  value="<? php echo $get_item['emp_no'];?>"></td>
          <input type="hidden" name="id" id="id"    value="<?php echo $get_item['id'];?>" >

          <td><input type="submit" name="edit" id="edit" value="edite"></td>    

      </tr>

        </table>

     </form>

【问题讨论】:

  • WHERE前面有一个逗号
  • $_POST['name']."', 后面有一个逗号 - 你需要删除它。
  • 确保该表中也有 id 字段
  • 您的代码易受 SQL 注入攻击,并且还使用了已弃用的 MySQL 库。
  • 感谢@Ryan Naddy 的编辑

标签: php mysql


【解决方案1】:

您在 UPDATE 语句中的 $_POST['id'] 之后缺少结束单引号,并且在 WHERE 条件之前还有一个不需要的逗号。

试试:

$upd= "UPDATE `employees` SET `emp_no`='".$_POST['name']."' WHERE `id`='".$_POST['id']."'";

【讨论】:

  • 同意和好的观点。用户输入 ($_POST) 应始终在用于查询之前进行验证。我的回答只是让查询正常工作。
【解决方案2】:
$upd= "UPDATE `employees` SET `emp_no`='".$_POST['name']."', WHERE `id`='".$_POST['id'].""; 
$do_upd = mysql_query($upd) or die(mysql_error());

你错过了一个'它应该是......

$upd= "UPDATE `employees` SET `emp_no`='".$_POST['name']."', WHERE `id`='".$_POST['id']."'"; 

“WHERE”之前也不需要逗号

【讨论】:

    【解决方案3】:

    放弃老式的 Mysql 并使用 PDO 让您和您的数据库更轻松,但您的问题是 WHERE 语句之前的逗号。

    $sql = $pdo->prepare("UPDATE employees SET emp_no = ? WHERE id = ?");
    $sql->execute(array($_POST['name'], $_POST['id']));
    

    根据个人喜好,您不应该使用波浪号 ` 来包围您的项目,如果是这样您不使用关键字,那么您可能应该重命名您的列/表/数据库。

    【讨论】:

      【解决方案4】:

      emp_no='".$_POST['name']."',

      逗号破坏了你的 SQL

      【讨论】:

        猜你喜欢
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 2018-03-24
        • 1970-01-01
        • 1970-01-01
        • 2014-04-04
        • 2014-01-15
        • 1970-01-01
        相关资源
        最近更新 更多