为什么我的PHP中的更新查询失败?

时间:2013-01-09 06:02:14

标签: php

我是php的新手。 通常我的更新查询正常工作,只有在此块中导致查询失败,我从之前确定的$_SESSION[id]获得官员值,并从之前的表单获得contact_id
请帮忙......

<?php
$server="localhost";
$db_user="root";
$pass="h6194v";
$db="my_db";
$koneksi=mysql_connect($server,$db_user,$pass)
     or die ("Connection Error!!");
$dateline=date("Ymd");
$query="UPDATE `contact` SET `date`=\'$dateline\', `officer`=\'$_SESSION[id]\' WHERE `contact_id`=\'$_POST[no]\'";
$result=mysql_query($query) or die ("Query fail");
?>

5 个答案:

答案 0 :(得分:2)

首先

  

请不要将mysql_ *函数用于新代码。它们已不再维护,社区已开始deprecation process。请参阅red box?相反,您应该了解prepared statements并使用PDOMySQLi。如果您无法决定,this article将有助于选择。如果您需要学习,请good PDO tutorial

除此之外,如果你使用mysql:

  1. 在与mysql_select_db($db,$koneksi)建立连接后选择数据库,或者在UPDATE语句中使用表名前面的数据库名称,如UPDATE my_db.contact ...
  2. 根据其他人的建议修复您的UPDATE语句
  3. 使用日期date('Y-m-d')的正确格式,或者更好地完全放弃,并在UPDATE语句中使用NOW()

答案 1 :(得分:0)

我格式化了你的查询并尝试了这个。

$query="UPDATE `contact` SET `date`='{$dateline}', `officer`='{$_SESSION['id']}' WHERE `contact_id`='{$_POST['no']}'";

注意:不要使用MySQL函数,不推荐使用它们而是使用PDO或MySQLi函数。您的代码是开放的SQL注入尝试添加验证或使用预处理语句来保护。

答案 2 :(得分:0)

试试这个 -

$query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION['id']."' WHERE `contact_id`='".$_POST['no']."'";

但在使用查询或任何地方之前验证$_POST$_GET

答案 3 :(得分:0)

了解你会遇到什么样的错误会有所帮助。

  1. 不要将用户输入或会话变量直接放入查询中,您应该首先清理它们,也许使用准备好的语句。
  2. 当你收到这样的错误时,尝试使用var_dump和die来查看发生了什么。即在查询之前var_dump($ _ SESSION ['id'])。 (现在我写了这个,我看到你的数组索引没有引号,这会引起问题。
  3. 您需要使用引号访问数组:$ _SESSION ['id'],$ _POST ['no']

答案 4 :(得分:-1)

像这样更改您的update查询

    $query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION[id]."' 
WHERE `contact_id`=".$_POST[no];

如果contact_id是字符串,请执行此操作

$query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION[id]."' 
WHERE `contact_id`='".$_POST[no]."'";