Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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_Sql - Fatal编程技术网

Php SQL不接受包含冒号(";:";)的值的插入

Php SQL不接受包含冒号(";:";)的值的插入,php,mysql,sql,Php,Mysql,Sql,作为我在这里的第一个主题,我会尽量不写太糟糕的文章^^ 首先,介绍一下上下文:我正在构建一个网站,打算使用MySQL数据库存储各种数据,如会议数据(日期、时间、主题、房间等)。我想允许用户通过一个表单向会议表添加条目,我相信目前效果不错 我的问题是:我存储在表中的小时数据使用hh:mm:ss格式,但似乎:不受欢迎 每个$meetingStuff都是我从表单中获得的,$meetingHour遵循hh:mm格式,下面是定义我发送到SQL server的查询的代码行 $dateToInsert = s

作为我在这里的第一个主题,我会尽量不写太糟糕的文章^^

首先,介绍一下上下文:我正在构建一个网站,打算使用MySQL数据库存储各种数据,如会议数据(日期、时间、主题、房间等)。我想允许用户通过一个表单向会议表添加条目,我相信目前效果不错

我的问题是:我存储在表中的小时数据使用
hh:mm:ss
格式,但似乎
不受欢迎

每个
$meetingStuff
都是我从表单中获得的,
$meetingHour
遵循
hh:mm
格式,下面是定义我发送到SQL server的查询的代码行

$dateToInsert = str_replace('/', '-', $meetingDate);
$hourToInsert = $meetingHour . ':00');
$sqlStmt = "INSERT INTO Meetings (Date, Hour, Committee, Title, Room, Type, Agenda) VALUES ($dateToInsert, $hourToInsert, $meetingCommittee, $meetingTitle, $meetingRoom, $meetingType, $meetingAgenda);";
以下是我在发送查询后收到的错误消息:

/Back-end_Conf_PP_2022/php/meetingFormAction.phpError: INSERT INTO Meetings (Date, Hour, Committee, Title, Room, Type, Agenda) VALUES (03-07-2019, 17:20:00, COM 27, Abracadabra, H, Official, );
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':20:00, COM 27, Abracadabra, H, Official, )' at line 1
这让我觉得问题出在冒号操作符
,但我没有找到如何通过它

感谢大家的时间和关注:)


PS:哦,顺便说一句,现在议程值是空的,但这是“正常的”。

使用PDO和准备好的语句来解决您的问题,但最重要的是,要避免SQL注入

$pdo
必须是一个对象


您对SQL注入持开放态度,应该立即解决使用PDO和准备好的语句的问题,因为您有SQL注入的风险确保date,hour的数据类型是datetime和time,我猜您使用的是
integer
,但是,您对SQL注入持开放态度问题是您需要引用值,例如:
…值(“$dateToInsert”、“$hourToInsert”、“$meetingCommittee”、…
但正如其他人所建议的,您的脚本可以进行SQL注入,请使用prepare语句以获得更好的安全性谢谢,我要尝试一下!顺便说一句,检查输入是为了防止SQL注入为什么要在PHP为您提供服务时执行任务?:)甚至可以在
MYSQLI\uu
PDO
API中使用
$sql = "INSERT INTO Meetings (Date, Hour, Committee, Title, Room, Type, Agenda) VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt= $pdo->prepare($sql);
$stmt->execute([$dateToInsert, $hourToInsert, $meetingCommittee, $meetingTitle, $meetingRoom, $meetingType, $meetingAgenda]);