【问题标题】:MySQL Update WHEREMySQL 更新 WHERE
【发布时间】:2012-11-01 12:44:13
【问题描述】:

我感觉我的语法不正确,但我无法缩小范围。我在 phpMyAdmin SQL 查询中运行该语句没有问题,所以希望我能指出正确的方向。我的代码如下:

else if ($resultdetails === 1) {
    $query3 = "update customer_det set `10k`='$_10k', 
      `14k`='$_14k', `18k`='$_18k', `21k`='$_21k', `22k`='$_22k', 
      `24k`='$_24k', `925k`='$_925k', `coins`='$coins', `bars`='$bars' 
      where `id` = '".$uid."'";
    $result3 = mysql_query($query3);
}

$resultdetails 是一个带有 EXISTS 函数的变量集。在 SQL 查询中,它为我返回 1,因为我要查找的行确实存在。所以应该没有问题。

我尝试了双重==,以及三重,结果似乎没有任何差异。我相信三元组=== 意味着它是相同的,即数据类型相同且值相同。

我认为这里的问题是 WHERE 语句。任何想法或建议将不胜感激。我忘了提到customer_det 是要更新的表,id 是主键,自动递增。我也从数据库中提取了$uid 变量。

【问题讨论】:

  • 您是否尝试过在 phpmyadmin 中直接针对您的数据库运行查询(或者至少是一个测试!)它会让您更好地了解任何语法错误等。
  • 查询在 phpMyAdmin SQL 查询框中运行良好。这就是为什么我不确定为什么它不起作用。
  • $uid 的数据类型是什么?如果它的 int 从您的查询中删除 ''。
  • 所以如果你输出 $query3 这样你就可以看到里面发生了什么。是否有意义。看不到语法错误,$uid 不是你认为的那样,更有可能
  • 嗯,我相信它是一个整数。我可以看到问题是“”正在尝试将数据类型作为字符串。

标签: php mysql select


【解决方案1】:

你的 sql 查询是对的! 但是您的else if 是问题所在! 见你加===, 用== 改变它,我也怀疑你的变量声明, 你的代码看起来 像这样:

else if ($resultdetails == 1) {
$query3 = "update customer_det set `10k`='".$_10k."',
`14k`='".$_14k."', `18k`='".$_18k."',
`21k`='".$_21k."', `22k`='".$_22k."', `24k`='".$_24k."', `925k`='".$_925k."', `coins`='".$coins."', `bars`='".$bars."' where `id` = '".$uid."'";
$result3 = mysql_query($query3);
}

编辑:

 if (CONDITION :: IF FOUND ON DATABASE) {
  $query3 = "update customer_det set `10k`='".$_10k."',
 `14k`='".$_14k."', `18k`='".$_18k."',
 `21k`='".$_21k."', `22k`='".$_22k."', `24k`='".$_24k."', `925k`='".$_925k."',        `coins`='".$coins."', `bars`='".$bars."' where `id` = '".$uid."'";
 $result3 = mysql_query($query3);
 } else {
 // Insert query if not found
 }

【讨论】:

  • 你说得对,现在我得到一个空白插入,因为我将第一个 IF 更改为 double ==。第一个 IF 语句说如果记录不存在则插入,else if 是提供的语句,如果存在,则更新。
  • 好的,我会帮助你...我会编辑我的问题...重要的是你必须知道并了解更多!等我……
  • 我已经编辑了我的答案,请学习我的方法!我想让你知道如何让 PHP 和 MySQL 发挥威力!
  • 我回显了 $resultdetails,它说的是资源 ID #11。所以这意味着我需要返回一个值而不是一个正确的对象?
  • 你能用完整的代码再创建一个问题吗?我会先回答它,因为如果你只说我没有被抓住!请先生!,精神!
【解决方案2】:

检查$uid$_blahblah 的数据类型

试试这个查询 --

else if ($resultdetails == 1) {
    $query3 = "update customer_det set `10k`='$_10k', 
      `14k`='$_14k', `18k`='$_18k', `21k`='$_21k', `22k`='$_22k', 
      `24k`='$_24k', `925k`='$_925k', `coins`='$coins', `bars`='$bars' 
      where `id` = $uid";
    $result3 = mysql_query($query3);
}

【讨论】:

  • 我删除了 ' 以及 " 并且每次都尝试过,但仍然无法获得更新。我在请求之前回显 UID 并且 UID 返回 273。所以基本上它是在尝试更新记录id = 273。
  • 回声 $query3;然后在mysql中运行查询并检查它是否正在运行?
  • 你 $query3 甚至不会回显,所以看起来它没有被执行。
  • @user1718270 用骰子检查一下;那是不是真的进去了,然后告诉我
  • @user1718270 试试这个 -> else if ($resultdetails == 1) { echo "Hello";死;并检查它是否显示你好??
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 2014-10-09
  • 1970-01-01
相关资源
最近更新 更多