【问题标题】:MYSQL PHP cannot insert or update with the same valueMYSQL PHP 无法插入或更新相同的值
【发布时间】:2014-07-01 18:49:27
【问题描述】:

我有一个有两个值的表。

ID, Building(是建筑物的名称)

我用 jquery 编写代码来插入或更新建筑物的名称(我从 list1 中获取 ID 值,从 text_build 中获取新名称)

function saveBuilding()
{
alert(document.getElementById("list1").value)
alert(document.getElementById("text_build").value)

$.get("saveBuilding.php",{ID:document.getElementById("list1").value,       val:document.getElementById("text_build").value}, 
function(ret) { alert(ret);});
}

我的 saveBuilding 在哪里:

   <?php 
    $idbuilding=$_GET['ID'];
    $name=$_GET['val'];
    require_once '../../../dbconnection.php';
    $db_server = mysql_connect($db_hostname, $db_username, $db_password);
    if (!db_server) die("Unable to connection_aborted to MySQL: " . mysql_error());
    mysql_select_db($db_database) or die ("Unable to connection_aborted to MySQL: " . mysql_error()); 

    $query = "UPDATE Building SET Name = '$name' WHERE ID_Building = '$idbuilding';"; 
      $result = mysql_query($query);
      if (mysql_error()) {
             echo mysql_error();
        }   
    mysql_close(); 
    ?>

现在,如果我用一个新值更新该值,它就可以工作,如果我用一个以前已经使用过的值更新该值,它表示查询成功,但它没有任何改变。

我尝试通过更改查询来插入新值。结果是一样的。

我也尝试直接从 mysql 添加这个值,它可以工作!

那么我的代码中的问题是什么?

谢谢

【问题讨论】:

  • 像什么?但是如果我在 mysql 命令行上编写该查询,它就可以工作..所以我认为问题出在 js o php 代码上没有?
  • 这不是一个正确的问题,正如用户在他/她的自动回答中所指出的那样。

标签: php jquery mysql sql sql-update


【解决方案1】:

MySQL 正在按设计(和其他 rdbms)工作。如果您尝试将值更改为其当前值,则不会引发错误,但不会发生任何事情。

你只需要运行

SELECT Name FROM your_table WHERE idbuilding=$id

然后将 Name 与已存储的内容进行比较。如果不同,请运行您的 UPDATE;如果不是,则不执行任何操作,因为不需要任何操作。

【讨论】:

  • 对不起,我没有解释清楚,我举个例子。
  • 如果一个值例如 'Building1' 我更新它在:'Building1'->'Building2'->'Building3' 如果我在更新它:'Building1'->'Building2 '->'Building1' 它不会更新最后的更改!
  • 请 DESCRIBE your_table 并在此处发布结果。
  • mysql> 描述建筑; +-------------+-------------+------+-----+-------- -+----------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +-------------+-------------+------+-----+-------- -+----------------+ | ID_建筑 |整数(11) |否 |优先级 |空 |自动增量 | |姓名 | varchar(30) |否 | |空 | | +-------------+-------------+------+-----+-------- -+----------------+ 2 行(0.00 秒)
  • 我开始认为您的数据库已损坏。这是一个非常基本的表格和 int 和 varchar 的定义。
【解决方案2】:

我解决了这个问题..

首先我验证了 php 代码是否有效。

然后我验证了问题是js。

我不知道为什么,但是在 $.post 中更改 jquery 函数 $.get 现在它可以工作了!!

【讨论】:

  • 您不知道为什么,但这是因为您使用与脚本预期的方法不同的方法发送表单数据。顺便说一句,这与 MySQL 和 PHP 无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 2015-07-16
  • 1970-01-01
相关资源
最近更新 更多