我读了很多问题,但我没有找到我的问题的解决方案。
我的顾虑:
我正在使用 PHP 中的 foreach 循环在 My SQL 中插入新记录。因此,在插入之前有什么方法可以找出我在我的 sql 中插入的记录是否已经存在。如果它存在,那么它应该返回“ALREADY EXIST”。
根据我的代码:
当我使用 FOR-EACH LOOP 时,我想要哪个qstonesid已经存在于我的 sql tbl_stickering中。如果存在,那么它应该返回 ECHO “ $qstonesid 已经存在”,如果$qstonesid不存在,那么调用我的 STORED PROCEDURE sp_stickering。
我希望我把我的担忧说清楚了,我对 PHP 和 mySql 完全陌生,任何帮助将不胜感激,
下面,我分享我的PHP代码
<?php
error_reporting(E_ERROR | E_PARSE);
include "config.php";
$stones = $_POST['stones'];
//echo json_encode($stones, true);
$StoneArr = json_decode($stones, true);
$updstmt = '';
foreach ($StoneArr as $Stone)
{
$currentdate=!empty( $Stone['currentdate'] ) ? $Stone['currentdate'] : '0000-00-00 00:00:00';
$qstonesid=$Stone['qstonesid'];
$clientname = $_REQUEST['clientname'];
$empid = $_REQUEST['empid'];
$updstmt .= 'CALL sp_stickering('.'"'.$currentdate.'"'.',
'.'"'.$clientname.'"'.',
'.'"'.$qstonesid.'"'.',
'.'"'.$empid.'"'.'
);';
}
//echo $updstmt;
$res = query($updstmt);
if (strlen($res) > 0) {
echo $res;
} else {
echo 'Records added successfully...';
}
下面是我正在使用的存储过程,
CREATE DEFINER=`root`@`%` PROCEDURE `sp_stickering`(
IN `_sdate_stickering` DATETIME,
IN `_client_name` VARCHAR(100),
IN `_qstonesid` VARCHAR(100),
IN `_empid` INT
)
BEGIN
IF EXISTS (SELECT qstonesid FROM tbl_stickering WHERE qstonesid = _qstonesid AND client_name = _client_name) THEN
BEGIN
UPDATE tbl_stickering SET empid = _empid WHERE qstonesid = _qstonesid AND client_name = _client_name;
END;
ELSE
BEGIN
INSERT INTO tbl_stickering
(sdate_stickering, client_name, qstonesid, empid)
VALUES
(_sdate_stickering, _client_name, _qstonesid, _empid);
END;
END IF;
END
慕桂英3389331
繁华开满天机
随时随地看视频慕课网APP