【问题标题】:Inserting MAX +1 Value into Textbox将 MAX +1 值插入文本框
【发布时间】:2017-02-17 15:34:07
【问题描述】:

我想将 MAX +1 值自动插入到只读文本输入中,然后将其作为插入查询提交到我的数据库。

我已经在我的数据库中测试了查询,它是正确的查询并且工作正常。

但是,当我在我的程序中运行它时,它返回 1。不确定它返回 1 是因为它是 TRUE 还是因为这只是它得到的值。

如何解决这个问题,以便获得正确的 MAX +1 值?

SQL/PHP:

<?php

$max = "SELECT MAX(Group_ID) +1 FROM SKU_Group_Dim";

$stmt = $dbh->prepare($max);
$result = $stmt->execute();

//echo $result;

?>

输入最大 +1 值:

<input type="text" name="id" id="id" class="text ui-widget-content ui-corner-all" value="<?php echo $result; ?>" readonly>

【问题讨论】:

  • 目前//echo $result; 显示什么?
  • 当前回显结果为1
  • mysqlipdo?
  • 您在此处创建了竞争条件。当两个人使用该应用程序时会发生什么?最好使用标识或序列来避免冲突。
  • 一个绝对糟糕的主意

标签: php html sql-server max


【解决方案1】:

这样试试:

$max = "SELECT MAX(Group_ID) +1 FROM SKU_Group_Dim";
$result = $dbh->query($max);
var_dump($result);

因为-&gt;execute() 只返回一个(布尔值)请参阅http://php.net/manual/de/pdostatement.execute.php

但是你应该记住 @RiggsFolly 和其他人关于这背后的逻辑的 cmets :)

【讨论】:

  • 这可能有效,但我将如何在输入中回显结果?现在,如果我在value="" 中回显 $result,那么我拥有的表格和输入框不会加载
  • @Rataiczak24 请以正确的方式使用$result,如果你不介意你自己,我现在真的不知道。当您执行var_dump($result); 时,您将看到下一步要做什么。它不再是:the echoed result is 1 currently 学习真正的编码:-)
  • 现在我的输入标签中有value="&lt;?php echo $result; ?&gt;"...如果这不是我应该做的,那么它应该是什么样子?这也是 var_dump 的样子 object(PDOStatement)#2 (1) { ["queryString"]=&gt; string(42) "SELECT MAX(Group_ID) +1 FROM SKU_Group_Dim" }
  • @Rataiczak24 伙计,请阅读文档(查找示例),查找Return Values,所以你得到一个PDOStatement 对象,你必须使用一种方法来获得结果。在这里阅读:de2.php.net/manual/en/pdostatement.fetchcolumn.php 编码很复杂
【解决方案2】:

$stmt-&gt;execute() 作为函数执行的结果只产生真或假。您需要单独获取结果并从结果集中提取数据。

类似:

$stmt->execute()
$result = $stmt->get_result();
$row = $stmt->fetch_row($result);

顺便说一句,正如 cmets 中提到的那样根本不是一个好主意

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-05
    • 2017-05-21
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多