Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅当其他表中有相同的值时,才插入新的SQL行_Php_Mysql - Fatal编程技术网

Php 仅当其他表中有相同的值时,才插入新的SQL行

Php 仅当其他表中有相同的值时,才插入新的SQL行,php,mysql,Php,Mysql,现在我有 表1: ID | DEVICEID | STATUS | -------------------------------- 1 | SN001 | ENROLL | 2 | SN002 | ENROLL | 表2: ID | DEVICEID | STATUS | -------------------------------- 1 | SN001 | ENROLL | 2 |

现在我有

表1:

ID  |   DEVICEID    |  STATUS  |
--------------------------------
1   |   SN001       |  ENROLL  |
2   |   SN002       |  ENROLL  |
表2:

ID  |   DEVICEID    |  STATUS  |
--------------------------------
1   |   SN001       |  ENROLL  |
2   |   SN002       |  ENROLL  |
3   |   SN003       |  ENROLL  |
4   |   SN004       |  ENROLL  |
有一个表单需要填写,以便使用AJAX POST-to-PHP在表1中插入新的设备ID和状态。在更新SQL之前,我如何创建一个条件,即只有在表2中的DEVICEID填写了相同的DEVICEID的情况下,才能更新Table1 only,否则它将返回错误,并且不会更新Table1

以下是我所拥有的:

"SELECT deviceid
FROM table1
INNER JOIN table2 ON table1.deviceid=table2.deviceid
INSERT INTO table1(deviceId,status)
VALUES('$deviceid', '$status')
WHERE deviceid = deviceid";                 <--- Not sure what I'm doing here, trying to compare
“选择设备ID
来自表1
表1上的内部联接表2.deviceid=表2.deviceid
插入表1(设备ID、状态)
值(“$deviceid”、“$status”)
其中deviceid=deviceid”;

并检查受影响的行数

我通常有两个查询

"SELECT EXISTS (
  SELECT deviceid
  FROM table1
  INNER JOIN table2 ON table1.deviceid=table2.deviceid
)"
然后,如果您正在使用
PDO
检查
行数是否为==0
如下

if ($stmt->rowCount == 0) {
    "INSERT INTO table1(deviceId,status)
     VALUES('$deviceid', '$status')
     WHERE deviceid = deviceid
    ";
} else {
    echo "Device ID already exists.";
}
请记住,使用
SELECT EXISTS()
只会返回
0
1
,因此如果您想返回一些可以使用的数据,您将无法获取任何数据

SELECT deviceid
FROM table1
INNER JOIN table2 ON table1.deviceid=table2.deviceid
LIMIT 1
另外,如果要在使用
PDO
时获取数据,请使用
rowCount()
而不是
fetchColumn()

解决此问题:

INSERT INTO table1 (deviceid, status)
SELECT DISTINCT '$deviceid','$status'
FROM table2
WHERE deviceid='$deviceid' AND status='$status'
感谢:


还有所有帮助过我的人。:)

mysql
sqlserver
?我正在使用mysql。
INSERT INTO table1 (deviceid, status)
SELECT DISTINCT '$deviceid','$status'
FROM table2
WHERE deviceid='$deviceid' AND status='$status'