【问题标题】:Select query inside a insert query在插入查询中选择查询
【发布时间】:2014-09-01 20:32:43
【问题描述】:

我正在尝试创建一个包含选择查询的插入查询。问题是它似乎不起作用,但它们是分开工作的。

select 查询从 numbers 表中选择最大的数字,然后它需要加 1。 $variables 来自 php。

我做错了什么?

INSERT INTO numbers (number, storeID, udid)
VALUES (
    (SELECT number
     FROM numbers
     WHERE storeid = '$var' AND DATE(timestamp) = CURDATE() 
     ORDER BY number DESC LIMIT 1
    ) + 1, $var, $udid)

【问题讨论】:

  • 显示更多代码。 PHP 变量不进行插值。
  • 嘿,显示更多代码!您是否在 MySQL 控制台中运行它?我怀疑。所以显示代码的环境->> PHP
  • MySql insert the results of a select 的副本。此外,您的查询看起来可能容易受到 SQL 注入的攻击,您应该使用参数化查询。

标签: php mysql sql


【解决方案1】:

你可以先创建一个变量来存储增量值

$results = mysqli_query($con, "Select number FROM numbers where storeid= '$var' AND DATE(timestamp) = CURDATE() Order by number DESC LIMIT 1");
if ($row = mysqli_fetch_array($results))
{
  extract($row);
  $incremented_value = $row['number'] + 1;
}

那么,列数必须相同

INSERT INTO numbers (number, storeID, udid) 
VALUES 
($incremented_value, $var, $udid)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 2018-10-07
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2014-10-17
    • 2013-11-23
    • 1970-01-01
    相关资源
    最近更新 更多