使用代码
# the data we want to insert
$data = array($first_name, $last_name, $email_from, $telephone, $dateofbirth, $addresslone, $addressltwo, $townnm, $countynm, $typeapp, $issubscribed);
$STH = $dbh->prepare("INSERT INTO members (fname, sname, email, phone, dob, addressl1, addressl2, town, county, type, subscribed) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$STH->execute($data);
?>
<!--<!DOCTYPE html>
<head><title></title></head><body> commented out during testing -->
Thank you for contacting us We will be in touch with you very soon.
<!-- </body></html> -->
Run Code Online (Sandbox Code Playgroud)
向用户显示成功消息:
感谢您与我们联系我们将尽快与您联系.
没有记录php错误.
这是插入此数据库 …
如果insert语句中的列与表本身的顺序不同,这是否重要?
NameTable
firstName | lastName | age |
Run Code Online (Sandbox Code Playgroud)
INSERT语句:
INSERT INTO NameTable (age, firstName, lastName) VALUES (25, 'jane', 'doe');
Run Code Online (Sandbox Code Playgroud) 我必须像这样插入两个:
INSERT INTO CONVERSATION (issue,...) VALUES ('Presentation',...);
INSERT INTO CONVERSATIONMESSAGES VALUES (ConversationId, 'Hello everybody',...);
Run Code Online (Sandbox Code Playgroud)
在第一个表中,唯一的PK是自动数字字段(ConversationId),稍后我必须知道要在第二个表中插入的自动数字字段.
有没有办法做到这一点?像我做第一个插入时选择*做第二个插入?
非常感谢,我希望我能正确解释.
我正在尝试为特定用户更新生物列,但我得到了一个新行.通过类似的问题,但无法解决我的情况.
if (isset($_SESSION['logged_in']) && $_SESSION['name_of_user'] == $profile_name) {
$pageOwner = true;
}
if (isset($_POST['submit'])) {
$bio = $_POST['bio'];
if (empty($bio)) {
$error = "Missing Bio";
} else {
if ($member_bio->num_rows == 1) {
if ($query = $db->query("UPDATE user_account SET 'bio'='$bio' WHERE 'id_user'='$id'")) {
$ok_mesg = "Profile has been updated!!!";
} else {
$error = "ERROR on our end";
}
} else {
if ($query = $db->query("INSERT INTO user_account (bio) VALUES('$bio')")) {
$ok_msg = "Profile has been updated";
} else { …Run Code Online (Sandbox Code Playgroud) 我正在为您通过表单注册的学校项目创建一个简单的注册和登录系统.
这是我的注册过程代码(没有一堆测试确定字段是否为空等),这只是查询部分.
对于包含丹麦标志(ÆØÅ)和丹麦语的变量感到抱歉,但我做了几个测试,如果我使用æøå或其他类型的字母无关紧要.
我根本无法理解为什么这一小段代码不起作用:
//I retrieve alot of variables from a form
$Fornavn = mysql_real_escape_string($_POST["Fornavn"]);
$Efternavn = mysql_real_escape_string($_POST["Efternavn"]);
$Koen = mysql_real_escape_string($_POST["Koen"]);
$Etnicitet = mysql_real_escape_string($_POST["Etnicitet"]);
$Brugernavn = mysql_real_escape_string($_POST["Brugernavn"]);
$Password = mysql_real_escape_string($_POST["Password"]);
$Mail = mysql_real_escape_string($_POST["Mail"]);
$Haarfarve = mysql_real_escape_string($_POST["Haarfarve"]);
$Oejenfarve = mysql_real_escape_string($_POST["Oejenfarve"]);
$Vaegt = mysql_real_escape_string($_POST["Vaegt"]);
$Hoejde = mysql_real_escape_string($_POST["Hoejde"]);
//The query
mysqli_query($con, "INSERT INTO bruger (Fornavn, Efternavn, Køn, Etnicitet, Brugernavn, Password, Mail, Hårfarve, Øjenfarve, Vaegt, Højde)
VALUES ('$Fornavn', '$Efternavn', '$Koen', '$Etnicitet', '$Brugernavn', '$Password', '$Mail', '$Haarfarve', '$Oejenfarve', '$Vaegt', '$Hoejde')");
echo $Fornavn;
Run Code Online (Sandbox Code Playgroud)
编辑:我知道它不起作用,因为我运行代码后,我的mysql数据库中没有任何内容.它只返回零行(我使用phpmyadmin顺便说一句.)我真的没有得到任何错误消息或任何东西.
正如所建议的那样,我试图将Mysqli_*用于我的变量:
//I retrieve …Run Code Online (Sandbox Code Playgroud) 我正在制作一个包含姓名,电子邮件等的简单表格,但我也有一个ModifiedDate.我的想法是在插入和更新后使用触发器,并插入当前日期.因此,如果任何人对该列做任何事情(除了删除),日期应该反映出来.
然而,这不起作用.
CREATE TRIGGER ModDate
ON X
AFTER INSERT, UPDATE
AS
BEGIN
INSERT INTO X (ModifiedDate)
VALUES (GETDATE())
END
Run Code Online (Sandbox Code Playgroud)
现在我有几个不能为null的值,这似乎是尝试创建一个新行.我希望它将日期插入当前正在执行的行中,我不知道如何.如果我一次添加5行怎么办?
我想知道是否有任何方法继续插入重复键错误后选择.含义:我想忽略该异常并继续插入下一条记录.我熟悉ignore_row_on_dupkey_index,但据我所知,不应该在生产环境中使用提示.
几件事情:1.查询将数百万条记录插入空表中.我更喜欢一个好的解决方案,对性能影响很小.
谢谢,亚历克斯
使用ignore_row_on_dupkey_index的代码示例:
CREATE TABLE customers
( customer_id number(10) NOT NULL,
customer_name varchar2(50) NOT NULL,
city varchar2(50),
CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);
CREATE TABLE customers_2
( customer_id number(10) NOT NULL,
customer_name varchar2(50) NOT NULL,
city varchar2(50)
);
insert into customers_2 values(1,'A','TLV');
insert into customers_2 values(2,'B','TLV');
insert into customers_2 values(2,'C','TLV');
insert into customers_2 values(3,'C','TLV');
SELECT * FROM customers_2
insert /*+ ignore_row_on_dupkey_index(customers, customers_pk) */
into customers select * from customers_2
select * from Customers;
Run Code Online (Sandbox Code Playgroud) 不幸的是,我一直在做一些研究,没有发现我能做的任何事情,我认为这是由于我一直在研究的示例中对MySQL构造的不了解所致。
我想做的是运行一个插入查询,并检查3个特定列中的值以确保它们不存在,然后插入,否则什么也不做。
我的表很基本:id(int11),user(varchar(45)),label(varchar(255)),agent(varchar(255)),empid(varchar(10))。
我的ID是我的主要用户,具有自动递增功能,这是我目前在插入时可以使用的代码,但是没有处理重复的代码:
$i = 0;
foreach ($agents as $ag){
$sql = mysql_query("INSERT INTO `pms_users`
(`id`,`user`,`label`,`agent`,`empid`)
VALUES
(NULL, '$user','$group','$labels[$i]','$ag')");
$i ++;
}
Run Code Online (Sandbox Code Playgroud)
我需要检查的三列是$ user,$ group和$ ag。
declare @OfferNameArabic nvarchar(100) = cast(' ???' as nvarchar(100))
select @OfferNameArabic
set @OfferNameArabic =' ???'
select @OfferNameArabic
Run Code Online (Sandbox Code Playgroud)
通过c#插入时
通过查询插入时
我已经以插入语句的形式从SQL DB中导出了表信息。许多表包含YYYY-MM-DD HH24:MI:SS格式的时间戳信息。由于有数百条这样的语句,因此我不希望在每个日期中添加TO_DATE()语句。我以为更改会话NLS DATE格式可以解决此问题,但是我仍然遇到的错误ORA-01843: not a valid month。
列数据类型为TIMESTAMP。
例:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
INSERT INTO gcGovernance (id, userID, grantAppID, grantAppUUID,
grantCommCatID, grantApprovalCmnt, grantApprovalDate) VALUES (758, 163,
408, 'iahfahfahashvai', 0, '', '2016-12-20
14:32:17');
Run Code Online (Sandbox Code Playgroud) sql-insert ×10
sql ×6
mysql ×5
php ×4
oracle ×2
arabic ×1
date-format ×1
forms ×1
mysqli ×1
sql-server ×1
sql-update ×1
t-sql ×1
triggers ×1
unique ×1