Php 如果select返回一行,则插入

Php 如果select返回一行,则插入,php,sql-server,select,insert,Php,Sql Server,Select,Insert,使用MS SQL-SERVER 我想知道,如果插入的值中有一个依赖于另一个表,那么将值插入到表中是否可能或最好说是最有效的方法,如果另一个表上不存在该Select查询,则不会这样做 例如,下一个查询 INSERT INTO producto VALUES ('ad-101', '27', 'Nissan','NP300','2016','aer3457','1',(SELECT Id from Inventario WHERE Serie = '5161017293')), ('ad-102'

使用MS SQL-SERVER

我想知道,如果插入的值中有一个依赖于另一个表,那么将值插入到表中是否可能或最好说是最有效的方法,如果另一个表上不存在该Select查询,则不会这样做

例如,下一个查询

INSERT INTO producto VALUES 
('ad-101', '27', 'Nissan','NP300','2016','aer3457','1',(SELECT Id from Inventario WHERE Serie = '5161017293')),
('ad-102', '27', 'Nissan','NP300','2015','aer5647','1',(SELECT Id from Inventario WHERE Serie = '5161019329'))
如果
5161019329
不在Invetory表中,则只插入一行

我知道我总是可以对select部分执行单独的查询,然后在php上执行逻辑以插入或不插入它,但这并不是那么有效,因为有时我可以一次插入100行

谢谢,

PDO有一个rowCount()函数,可以调用该函数来计算您所做查询的行数,如果这是您的意思的话。(这个问题没有真正意义)

你可以试试:

$query = $handler->query("Your select query");

if ($query->rowCount() == 0) {
  // Insert Query
}
除此之外,我没有经常使用MySQLi连接,但是您可以使用从0开始的
$count++
变量循环查询,然后如果该
$count
变量等于0,则稍后在逻辑中插入查询


很抱歉,如果答案没有意义,但问题也没有意义。

如果您选择返回的ID号列不是可为空的列,mysql应该阻止插入并抛出错误

您可以使用以下查询,它应该可以工作

INSERT INTO producto
SELECT
'ad-101', '27', 'Nissan','NP300','2016','aer3457','1', Id FROM Inventario WHERE Serie = '5161017293'

如果
Incentario
with
Serie
5161017293中没有行,则不会插入任何数据。

对该列使用外键约束,然后查看您的查询是否成功。我认为您误解了,可能是错误的解释,但您可以看到在插入查询中有一个SELECT子查询,其中select查询可能为空,但插入将发生,因为该列接受null,我需要它接受null。我使用SQL server作为标记,需要在post中指定,抱歉。如果select没有返回任何行,我将得到一个NULL,并将使用NULL插入。我不确定我是否理解如果该查询返回NULL,我认为您不想插入的问题。是的,确实如此,但在此之前,该值可能是NULL,因此我需要允许NULLsHow生成此查询字符串吗?一些基于用户输入的php逻辑?是的,从上传的文件转换成json并以表单形式传递。