【问题标题】:Clarifications about Multi Queries关于多查询的说明
【发布时间】:2016-12-09 23:04:55
【问题描述】:

我正在尝试执行 2 个查询,但每当我按照有关多个查询的在线指南进行操作时,它都不会执行任何一个查询。

我在第一个查询中尝试做的是将用户在 $HISTORY 上输入的任何内容插入到当前位于 colHistory 上的记录中;即:

colHistory 的当前数据:

一个

用户在 $HISTORY 上输入“B”,语法应在当前记录的“A”或“AB”上添加“B”。然后使用第二个查询更新此特定行上的所有其他记录或列。

这是代码(请注意,“...”表示更多不必要的代码):

 $query  = INSERT INTO tbInventory SET colHistory='$HISTORY' WHERE colSerno='$SERIALNUM';";
 $query .= "UPDATE tbInventory SET 

     colImage='$IMAGE',
     colSerno='$SERIALNUM',

     ...
     ...

     colHistory=''
     WHERE colSerno='$SERIALNUM'"; 

     mysqli_multi_query($con,$query);

请注意我在插入表单数据之前将 colHistory 声明为 '' 的位置。我不确定我在这部分做得是否正确。有什么我想念的吗?

*编辑:

我已经尝试将查询一一执行:

mysqli_query($con,"INSERT INTO tbInventory SET colHistory='$HISTORY' ");
mysqli_query($con,"UPDATE tbInventory SET   
...
...

colHistory=''
WHERE colSerno='$SERIALNUM'";

但它似乎也不起作用,整个事情都被忽略了。

(**我在上面的代码块下面有一个脚本,我可以在上面打印结果,并且它确实运行)

【问题讨论】:

  • 为什么不一一列出 mysqli_query 呢?除非您别无选择或它有一些好处,否则您不必使用它
  • 我尝试过使用它,但代码块似乎忽略了它,就像它使用上面的多查询代码块一样。
  • 啊。您的第一个 SQL 无效:插入 tbInventory(colHistory) 值 ('$HISTORY') -- 请查看 MySQL 插入手册
  • 我已经尝试了上面的代码并且它确实有效,但是当我将它与其他查询一起使用时,它会完全忽略它。问题似乎出在我的多查询而不是上面的单查询中。
  • 所以没有任何效果。您显示零错误检测

标签: php mysql


【解决方案1】:

我可以告诉你为什么你的第一个查询被破坏了。 INSERT INTO tbInventory SET colHistory='$HISTORY'

此查询使用 UPDATE 语法,但您告诉查询处理器期待 INSERT INTO 语法。所以查询无法执行。

决定您是需要更新现有记录还是插入新记录并更改您的查询以反映这一点。 (将 INSERT INTO 更改为 UPDATE 或将“Set colHistory = '$ History'”更改为“Values ('$ History', 'col2Val', etc..")

至于您的第二个查询,从您显示的内容来看,语法看起来不错,但由于您没有发布整个查询,因此很难说出那里发生了什么。如果您可以显示更多该查询,我可以更新此回复。

这是关于插入与更新的一个很好的 SO 问题。

What are differences between INSERT and UPDATE in MySQL?

【讨论】:

  • 我想要做的是在当前 colHistory 上的记录中插入或添加用户在 $HISTORY 上输入的任何内容; IE:colHistory 上的当前数据:A 用户在 $HISTORY 上输入“B”,语法应在当前记录的“A”或“AB”上添加“B”;然后在第二个查询上使用 UPDATE 函数。
  • sql手册中哪里有INSERTstmts的WHERE子句?这是Page
  • 如果你退后一步学习 PHP 几天,比如错误报告,如果你对 SQL 做同样的事情,我们现在就不会在这里。这不是第 1 天教程网站。我说那将是所有的善意
  • 感谢您指出这一点;有什么方法可以帮助我解决我想要实现的目标吗?更新列或 colHistory 中的数据而无法更改或编辑其上的当前记录?我在编辑页面上使用了整个语法。
  • 我正在为我的答案添加一个链接,其中包含一个关于更新与插入的好问题。我建议从那里开始。
【解决方案2】:

我最终放弃了多查询方法,并且通过某种方式作弊得到了我想要的结果:

我分配了旧数据或当前在 colHistory 单元格上的数据,显示了它,但我禁用了 textarea。然后,我在脚本中创建了一个带有旧数据的隐藏文本框,然后将其隐藏到用户视图中。

然后,我将两个 textareas 与我创建的用户可以修改的新文本区域连接起来,模拟想要的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多