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