Я делаю одноразовый оператор sql select, чтобы увидеть, существует ли новая запись в моей базе данных. Если запись не существует, добавьте новую запись в базу данных.
Вот и вся логика этого кода. Должно быть просто.
Получена ошибка: 1 Описание ошибки: Невозможно обновить таблицу ‘customer_info’ в сохраненной функции / триггере, поскольку она уже используется оператором, который вызвал эту сохраненную функцию / триггер.
Пожалуйста, перепишите мой код, чтобы я мог видеть, как написать подобный код в будущем.
//What type of record are we searching for? eid or pid?
if($checkid) {
$t1 = "SELECT * FROM `customer_info` WHERE `e_id` LIKE '" .$row['ename'] . "';";
} else {
$t1 = "SELECT * FROM `customer_info` WHERE `p_id` LIKE '" .$row['pId'] . "';";
}
//Run the mysqli check to find any matching records
if($result = $mysqli->query($t1)){
printf("Select returned %d rows.\n<br>", $result->num_rows);
}
//If a record was found, present it. Else, prepare to insert the new data.
if($info = mysqli_fetch_assoc($result)) {
print_r($info);
} else{
foreach($row as $key => $value) {
$row["$key"] = str_replace("'","", $value);
}
//Remove junk characters (please suggest a better way to do this)
unset($row['message']);
$values = "DEFAULT, '" . implode("', '",$row). "', '0'";
$values = str_replace("''","'",$values);
$values = str_replace("', ', '", "', '",$values);
$sql = "INSERT INTO `customer_info`(`id`, `transaction`, `price`,`ebay_id`, `paypal_id`, `eBook`, `item_num`, `quantity`, `first`, `last`, `street`, `country`, `state`, `zipcode`,`download`) VALUES ($values);";
if(!mysqli_query($mysqli, $sql)) {
echo ("1 Error description: " . mysqli_error($mysqli));
$mysqli->close(); die();
} else {
mysqli_query($mysqli, $sql);
$status = imap_setflag_full($inbox, $email_number, "\\Seen", ST_UID);
}
}
Задача ещё не решена.
Других решений пока нет …