2013-01-09 56 views
0

我是新来的PHP。 通常我的更新查询正在工作,只有在这个块导致查询失败,我从之前确定的$_SESSION[id]和从之前的表单获得的职员值为contact_id
请帮助...为什么我的更新查询在我的php失败?

<?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"); 
?> 
+0

您是否收到'Query fail'错误? – Sahal

+0

无需转义单引号。 – keyboardSmasher

+0

另外,停止使用mysql_ *并且不要将会话变量传递给sql语句。哎呀! – keyboardSmasher

回答

-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]."'"; 
+0

只需要知道为什么把这个减号? – Sahal

+0

我已经尝试了鳕鱼,但仍然返回查询失败消息 – user1960274

+0

这是不公平的,你必须相应地改变。可以'回声'查询并粘贴在这里? – Sahal

0

我格式化您的查询,试试这个。

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

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

0

试试这个 -

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

但是,使用查询或任何之前验证$_POST$_GET

0

这将有助于知道你得到什么样的错误。

  1. 不要将用户输入或会话变量直接放入查询中,您应该首先对它们进行消毒处理,或许使用预处理语句。
  2. 当你得到这样的错误时,试着使用var_dump和die去看看发生了什么。即在查询var_dump($ _ SESSION ['id'])之前。 (现在我写了,我看到你没有在你的数组索引上引用,这将导致问题。

你需要用引号访问你的数组:$ _SESSION ['id'],$ _POST [“不”]

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()
+0

感谢您的帮助...... – user1960274