php mysql insert into 结合详解及实例代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php mysql insert into 结合详解及实例代码相关的知识,希望对你有一定的参考价值。
参考技术A phpmysql
insert
into
结合详解
ySQL
INSERT
INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好。
向数据库表插入数据
INSERT
INTO
语句用于向数据库表添加新记录。
语法
INSERT
INTO
table_name
VALUES
(value1,
value2,....)
您还可以规定希望在其中插入数据的列:
INSERT
INTO
table_name
(column1,
column2,...)
VALUES
(value1,
value2,....)
注释:SQL
语句对大小写不敏感。INSERT
INTO
与
insert
into
相同。
1.insert语句一次可以插入多组值,每组值用一对圆括号括起来,用逗号分隔,如下:
insert
into
`news`(title,body,time)
values('title
1','body
1',now()),('title
2','body
2',now());
2.Insert
Select
语句,将查询的结果插入到新的表,顾名思义,它由一条insert语句和一条select语句组成
insert
into
news_one(id,title,body,time)
select
id,title,body,time
from
news_two;
要注意的是,这两个表的结构要完全相同,列名可以不同。
在php中使用方法
下面是
"insert.php"
页面的代码:
<?php
$con
=
mysql_connect("localhost","peter","abc123");
if
(!$con)
die('Could
not
connect:
'
.
mysql_error());
mysql_select_db("my_db",
$con);
$sql="INSERT
INTO
Persons
(FirstName,
LastName,
Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if
(!mysql_query($sql,$con))
die('Error:
'
.
mysql_error());
echo
"1
record
added";
mysql_close($con)
?>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
使用 INSERT INTO 时出现 MySQL 错误 2002
【中文标题】使用 INSERT INTO 时出现 MySQL 错误 2002【英文标题】:MySQL error 2002 when use INSERT INTO 【发布时间】:2014-06-20 18:32:46 【问题描述】:我的mysql有问题。当我执行此操作时,这给了我一个错误:没有这样的文件或目录 2002,但 SELECT 查询工作完美并在屏幕上打印类型。我该如何解决这个问题?
<?php
$con=mysqli_connect("db4free.net","****","****","*****");
if (mysqli_connect_errno($con))
echo "Failed to connect to MySQL: " . mysqli_connect_error();
$username = $_GET['username'];
$password = $_GET['password'];
$result = mysqli_query($con,"SELECT Typ FROM Uzytkownik where Login='$username' and Haslo='$password'");
$row = mysqli_fetch_array($result);
$data = $row[0];
if($data)
echo $data;
$que = "INSERT INTO Uzytkownik VALUES ('10','tr','t','a')";
if( !mysql_query($que) )
echo "ERROR!!: ".mysql_error().mysql_errno() ;
mysqli_close($con);
?>
结果:
testERROR!!: No such file or directory2002
编辑对不起,我粘贴了错误的代码,但它已经被更改了
【问题讨论】:
我没有看到您的代码中的“INSERT INTO”调用在哪里。 修改您的问题并包含省略的 INSERT INTO。您希望我们如何在不知道问题的情况下提供帮助? 参考这个看看是否解决问题:***.com/questions/1676688/… 您正在混合使用mysql_*
和 mysqli_*
函数。仅使用mysqli_*
。
您的代码非常容易受到 SQL 注入的影响。 login.php?username=admin' --
会认为我是管理员而不知道密码。另外,不要以明文形式存储密码。
【参考方案1】:
您不能将mysqli_*
函数与mysql_*
函数混合使用。
替换这个:
if( !mysql_query($que) )
echo "ERROR!!: ".mysql_error().mysql_errno() ;
与
if( !mysqli_query($con, $que) )
echo "ERROR!!: ".mysqli_error($con) ;
【讨论】:
【参考方案2】:在插入查询中,您应该告诉您要插入哪些列。
$que = "INSERT INTO Uzytkownik(col1, col2, col3, col4) VALUES ('10','tr','t','a')";
另外请注意,您的大多数查询都容易受到sql-injections 的攻击,您应该使用prepared statements 来保护您的代码。
示例:您的选择查询如下所示:
"SELECT Typ FROM Uzytkownik where Login='$username' and Haslo='$password'".
如果我是一个用户,我可以在不使用密码的情况下进入,通过在用户名或密码中结束 sql 语句,我可以删除表,如果我是一个黑帽,我什至可以删除整个数据库心情不好。
使用准备好的语句意味着您将用户输入替换为VALUES(?, ?)
,而不是使用用户输入提供的值,然后您可以绑定将执行的参数并替换占位符。
使用PDO 允许您使用命名参数,您应该看看。
还请注意,您正在混合使用 mysql_*
和 mysqli_*
,它们不是同一个函数库,坚持使用一个(否则它根本不起作用),mysqli_*
更好 since mysql_*
已弃用.这可能会导致您的问题。
【讨论】:
易受硬编码值的 SQL 注入的影响?这对我来说是新的。 查询不安全,应该做相应的更改,不代表我必须为他做。 查询是完全安全的。由于用户没有提供任何值,因此无法将其用于 SQL 注入。 抱歉,我的观点没有完全清楚。插入语句本身是安全的,但我高度假设该语句用于测试,一旦他开始工作,他将开始插入用户输入。选择查询也是如此,这是不安全的。 关于选择查询你是对的。但是,您应该使用 select 查询作为示例,并且应该将其作为评论发布,因为它不会以任何方式回答问题。以上是关于php mysql insert into 结合详解及实例代码的主要内容,如果未能解决你的问题,请参考以下文章
使用 INSERT INTO 时出现 MySQL 错误 2002
php 函数 last_insert_id() 不适用于 REPLACE INTO 查询
INSERT INTO MySQL 表 SELECT FROM PostgreSQL 表
PHP怎么使用mysql的insert into语句将三个输入框里的字符内容当作表的一条记录插入数据库中?这个该怎...