我正在尝试创建一个忘记密码系统,因此我使用该NEWID()功能创建一个随机代码以发送到用户的电子邮件。我正在使用准备好的语句来防止 SQL 注入,但这仍然不起作用:
$sql = mysqli_prepare($conn, "INSERT INTO verifyEmail (username, code) VALUES (?, NEWID())");
mysqli_stmt_bind_param($sql, "s", $user);
mysqli_stmt_execute($sql);
Run Code Online (Sandbox Code Playgroud)
我在第二行收到警告,第一个参数不能是布尔值。(因此,SQL 代码中存在语法错误)。我知道该NEWID()功能是问题所在,因为删除它可以修复警告。在准备好的语句中不起作用NEWID()?如果是这样,我应该如何去做呢?另外,我需要运行一个SELECT语句来获取函数返回的值NEWID()。我这一切都错了吗?
我有一个这样的表:
CREATE TABLE event (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
start_datetime TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:01',
end_datetime TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:01',
description TEXT,
created TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
modified TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)
);
Run Code Online (Sandbox Code Playgroud)
插入这条新记录时没有错误:
insert into event (name, start_datetime, end_datetime)
value
('myName', '2020-01-05 18:00:00', '2020-01-07 23:59:00')
;
Run Code Online (Sandbox Code Playgroud)
但这条记录抛出错误:
insert into event (name, start_datetime, end_datetime)
value
('myName', '2045-01-05 18:00:00', '2045-01-07 23:59:00')
;
Run Code Online (Sandbox Code Playgroud)
错误是
Data truncation: Incorrect …Run Code Online (Sandbox Code Playgroud) 我有一个名为student以下各列的表,如下所示
S_id, person_id, subject_id, start_date, end_date, count
Run Code Online (Sandbox Code Playgroud)
同时,我编写了一个查询来从其他表中提取数据并将其输入到表person中
我写的查询如下所示
INSERT INTO student (S_id, person_id, subject_id, start_date, end_date, count)
SELECT
person_id
, subject_id,
, MIN(exam_start_date) AS start_date
, end_date
, COUNT(*) AS count
FROM main_table
GROUP BY person_id, subject_id, end_date
ORDER BY person_id, subject_id
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我select query仅从person_id其他列获取数据。
如何为select 语句中的列创建autoincrementor以便插入数据?serialS_id
目前,我收到一个错误
错误:“S_id”列中的空值违反了非空约束详细信息:失败的行包含 (null, 1234, 77670, 2139-04-22, 2139-04-22, 1)。
我目前正在使用Athena 命令通过自动化作业更新按每天INSERT INTO分区的表。execution_date
我现在想通过每天更新表两次来配置此作业,但仍按execution_date. 因此,我早上的作业运行应该像往常一样工作,但是我下午的作业运行同样应该覆盖早上execution_date同样按同样分区的记录。execution_date
我已经研究过MSCK REPAIR TABLE,但不确定它如何适合我的用例。
如何使用 Athena 的INSERT INTO命令覆盖按相同值分区的记录?
sql amazon-web-services database-partitioning sql-insert amazon-athena
我想将 JSON 数组中的所有元素插入到表中:
INSERT INTO local_config(parameter, value)
SELECT json_extract(j.value, '$.parameter'), json_extract(j.value, '$.value')
FROM json_each(json('[{"parameter": 1, "value": "value1"}, {"parameter": 2, "value": "value2"}]')) AS j
WHERE value LIKE '%'
ON CONFLICT (parameter) DO UPDATE SET value = excluded.value;
Run Code Online (Sandbox Code Playgroud)
到目前为止这有效,但我真的需要这个WHERE value LIKE '%'条款吗?
当我删除它时:
INSERT INTO local_config(parameter, value)
SELECT json_extract(j.value, '$.parameter'), json_extract(j.value, '$.value')
FROM json_each(json('[{"parameter": 1, "value": "value1"}, {"parameter": 2, "value": "value2"}]')) AS j
ON CONFLICT (parameter) DO UPDATE SET value = excluded.value;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
[SQLITE_ERROR] SQL error or missing database (near …Run Code Online (Sandbox Code Playgroud) 我试图使用第一个表中的主键一次插入两个表以插入第二个表,但我不知道如何进行。
我的表结构如下:
人
PersonId
FirstName
Surname
Run Code Online (Sandbox Code Playgroud)
员工
EmployeeId
HoursWorked
Run Code Online (Sandbox Code Playgroud)
PersonId表中Person是一个自动递增的列。EmployeeId第二个表中的主键和外键应与 相同PersonId。
我一直在尝试使用在谷歌上找到的这个查询字符串,但运气不佳:
string queryString = "BEGIN TRANSACTION DECLARE @DataID int; "
+"INSERT INTO Person(FirstName, Surname) VALUES(@firstName, @surname);"
+ "SELECT @DataID = scope_identity();"
+ "INSERT INTO Employee VALUES(@DataId, @hoursWorked);"
+ "COMMIT";
Run Code Online (Sandbox Code Playgroud) EXIST如果目标表中没有多行,我希望插入多行。但我不确定如何使用以下代码执行此操作:
INSERT INTO sales.promotions(
promotion_name,
discount,
start_date,
expired_date
)
VALUES
('2019 Summer Promotion', 0.15, '20190601', '20190901'),
('2019 Fall Promotion', 0.20, '20191001', '20191101'),
('2019 Winter Promotion', 0.25, '20191201', '20200101');
Run Code Online (Sandbox Code Playgroud)
因为该WHERE NOT EXIST子句将应用于所有行,而我需要逐行执行:
WHERE NOT EXISTS (SELECT * FROM sales.promotions
WHERE promotion_name = 'Winter Promotion');
Run Code Online (Sandbox Code Playgroud)
抱歉,如果这是非常明显的,我不太擅长 SQL,而且我不太确定如何表达这个问题以进行适当的研究。
我有sql文件(single_table_data.sql)包含只有一个表的数据(我从服务器只转储了一个表)
现在我必须将此sql文件插入到我的数据库中的单个表中,
那么如何将sql文件导入到postgres中的单个表中?
编辑
例如,我有数据库名称SpeedData和表名CurrentTable,所以现在我想将整个sql文件数据插入到此表中CurrentTable
注意:sql文件只包含insert statements(甚至不包含create语句)
我抛出错误的PHP代码如下:
$stmt = $con->prepare('INSERT INTO listOfRides (address, time) VALUES
('$address', '$time')') ;
Run Code Online (Sandbox Code Playgroud)
我查看过其他帖子,看起来我正确使用变量和单引号,但访问URL时会显示以下错误:
Parse error: syntax error, unexpected T_VARIABLE in /home/gbidjght/public_html
/insertRide.php on line 79
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏
我试图将一个较小的表中的记录添加到一个非常大的表中,如果较小的表中的行的主键值不在较大的表中:
data test;
Length B C $4;
infile datalines delimiter=',';
input a b $ c $;
datalines;
1000,Test,File
2000,Test,File
3000,Test,File
;
data test2;
Length B C $4;
infile datalines delimiter=',';
input a b $ c $;
datalines;
1000,Test,File
4000,Test,File
;
proc sql;
insert into test
select * from test2
where a not in (select a from test2);
quit;
Run Code Online (Sandbox Code Playgroud)
然而,这不会将记录插入表中Test.谁能告诉我我做错了什么?最终结果应该是应该将a = 4000的行添加到表中Test.
编辑:
使用where a not in (select a from test)是我最初尝试的,它产生了以下错误:
WARNING: This DELETE/INSERT statement …Run Code Online (Sandbox Code Playgroud) sql-insert ×10
sql ×7
mysql ×3
php ×2
postgresql ×2
sql-server ×2
database ×1
insert ×1
on-clause ×1
restore ×1
sas ×1
sql-update ×1
sqlite ×1
timestamp ×1
upsert ×1