gpt4 book ai didi

php - 如果查询 store_num 退出则更新 mysql 表

转载 作者:可可西里 更新时间:2023-11-01 08:05:47 25 4
gpt4 key购买 nike

大家好!

我正在使用 php 和 mysql 开发应用程序。基本上,最初,我使用 html 表单将新数据条目插入数据库,其中 store# 是我的主键。现在我无法更新现有的商店#(作为我的主键)并收到一条消息说“商店 967 的重复条目(示例)”。 如果条目存在,我想更新“商店”表。下面是我的代码,但我收到了另一条错误消息

错误:您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 '['967'],address=['500 kipling avenue 1'],dsm_name 附近使用的正确语法=['n/a'],phone=['416-967-' at line 1

我不确定我是否在正确的位置使用了 if 条件。

**$sql = "INSERT INTO `stores`(`store_num`, `address`, `dsm_name`, `phone`, `router_type`, `high_speed_pri`, `dsl_log`, `dsl_pass`, `secondary_conn`, `sec_dsl`, `sec_pass`) VALUES ('$store' , '$address', '$dsm', '$phone', '$router', '$highspeedpr', '$dsllog', '$dslpas', '$secondary_conn' , '$secdsl' , '$sec_pass')";

$mysqli_query = "SELECT * from 'stores' WHERE $store = 'store_num'";

if ($mysqli_query == TRUE){

$sql = "UPDATE `stores` SET `store_num`=['$store'],`address`=['$address'],`dsm_name`=['$dsm'],`phone`=['$phone'],`router_type`=['$router'],`high_speed_pri`=['$highspeedpr'],`dsl_log`=['$dsllog'],`dsl_pass`=['$dslpas'],`secondary_conn`=['$secondary_conn'],`sec_dsl`=['$secdsl'],`sec_pass`=['$sec_pass'] WHERE 1";

}

if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);

?>**

最佳答案

替换而不是插入

由于您的更新语句包含与插入相同的所有字段,您可以简单地使用 REPLACE 声明。如链接文档所述:

REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. See Section 13.2.5, “INSERT Syntax”.

因此,将代码更改为以下内容应该可行:

$sql = "REPLACE INTO `stores`(`store_num`, `address`, `dsm_name`, `phone`, `router_type`, `high_speed_pri`, `dsl_log`, `dsl_pass`, `secondary_conn`, `sec_dsl`, `sec_pass`) VALUES ('$store' , '$address', '$dsm', '$phone', '$router', '$highspeedpr', '$dsllog', '$dslpas', '$secondary_conn' , '$secdsl' , '$sec_pass')";

错误原因

您的问题出在更新语句中的语法上。什么是store_num,是数字还是字符串?

您应该更改语法以在实际的 mysql 查询中不包含方括号。

如果 $Store 是数字:

=['$store'],=$store

如果 $Store 是文本:

=['$store'],='$store'

最终推荐

更好的是使用准备好的语句,这些语句也是安全的并且可以避免 SQL 注入(inject)攻击。

关于php - 如果查询 store_num 退出则更新 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com