PHP MYSQL
时间:2021-07-01 10:21:17
帮助过:37人阅读
$serverName = "127.0.0.1"
;
$userName = "root"
;
$password = "2202125514"
;
$databaseName = "test_1"
;
$conn =
new mysqli($serverName, $userName, $password, $databaseName);
if($conn->
connect_error){
echo("连接失败"
);
} else{
echo("连接成功"
);
}
$sql = "
create table ta_1(
id smallint unsigned primary key auto_increment,
name varchar(10),
ps varchar(50)
)"
;
if($conn->query($sql) ==
true){
echo(‘<br>‘ . "数据表ta_1创建成功"
);
} else{
echo("<br>" . "创建失败<br>" . "错误信息:" . $conn->
error);
}
$conn->query($sql_1);
//执行某条mysql指令
$sql = "insert into ta_1(name, age) values(‘john_1‘, ‘19‘);"
;
$sql .= "insert into ta_1(name, age) values(‘man_4‘, ‘30‘);"
;
$sql .= "insert into ta_1(name, age) values(‘amn_5‘, ‘26‘);"
;
$sql .= "create table ta_3(country varchar(10));"
;
if($conn->multi_query($sql)){
//执行多条sql语句
echo("成功<br>"
);
} else{
echo("失败<br>错误信息:" . $conn->
error);
}
2、MySQLi 预处理语句
用于防止sql注入
预处理语句的工作原理如下:
1)预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?"
标记 。例如:?INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?
)
2
)数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。
3)执行:最后,将应用绑定的值传递给参数(”?
” 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。
相比于直接执行SQL语句,预处理语句有两个主要优点:
预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。
绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。
预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。
$stmt = $conn->prepare("insert into ta_1(name, age) values(?, ?);"
);
$stmt->bind_param("si"
, $_name, $_age);
$_name = "man_11"
;
$_age = 14
;
$stmt->
execute();
$_name = "man_12"
;
$_age = 15
;
$stmt->
execute();
echo("插入成功"
);
$stmt->
close();
$conn->
close();
3、bind_param() 函数
$stmt->bind_param("sss"
, $firstname, $lastname, $email);
该函数绑定了 SQL 的参数,且告诉数据库参数的值。 "sss"
参数列处理其余参数的数据类型。s 字符告诉数据库该参数为字符串。
参数有以下四种类型:
i -
integer(整型)
d -
double(双精度浮点型)
s -
string(字符串)
b -
BLOB(binary large object:二进制大对象)
每个参数都需要指定类型。
通过告诉数据库参数的数据类型,可以降低 SQL 注入的风险。
4、查询数据
$sql = "select * from ta_1;"
;
$result = $conn->
query($sql);
if($result->num_rows > 0
){
while($row = $result->
fetch_assoc()){
echo($row["id"] . "--" . $row["name"] . "--" . $row["age"] . "<br>"
);
}
} else{
echo("查询不到结果"
);
}
$sql = "select * from ta_1 where(id=11);"
;
$result = $conn->
query($sql);
$row = $result->
fetch_assoc();
//$row = $result->fetch_array();
echo("hello " . $row["name"] . "<br>now you are " . $row[“age"]);
通配符的使用$sql = ‘select * from ta_1 where(name like \‘‘ . $s . ‘%\‘)‘;
PHP MYSQL
标签:error 成功 pass 而不是 guests ble har new 原理