0

我是 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");
?>
4

5 回答 5

2

首先

请不要将 mysql_* 函数用于新代码。它们不再被维护并且社区已经开始了弃用过程。看到红框了吗?相反,您应该了解准备好的语句并使用PDOMySQLi。如果你不能决定,这篇文章将有助于选择。如果你想学习,这里有很好的 PDO 教程

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

  1. mysql_select_db($db,$koneksi)在与 UPDATE 语句中的表名前面建立连接或使用数据库名称后选择一个数据库,例如UPDATE my_db.contact ...
  2. 按照其他人的建议修复您的 UPDATE 语句
  3. 使用正确的日期格式date('Y-m-d')或更好但完全放弃它并NOW()在您的 UPDATE 语句中使用
于 2013-01-09T06:16:25.403 回答
0

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

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

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

于 2013-01-09T06:06:50.383 回答
0

尝试这个 -

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

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

于 2013-01-09T06:07:27.290 回答
0

了解您遇到的错误类型会有所帮助。

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

您需要使用引号访问您的数组: $_SESSION['id'], $_POST['no']

于 2013-01-09T06:07:28.223 回答
-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]."'";
于 2013-01-09T06:05:54.620 回答