php数据库链接

Php超全局变量

GET POST 都创建一个数组(例如 array key1 => value1 key2 => value2 key3 => value3 ...))。此数组包含键/值对,其中 键是表单控件的名称,值是来自用户的输入数据。

GET POST 都被视为 _GET 美元和 _POST 美元。这些是超全局, 这意味着无论范围如何,它们始终都可以访问 - 您可以从任何功能访问它们, 类或文件,而无需执行任何特殊操作。

$_GET 是通过 URL 参数传递给当前脚本的变量数组。

$_POST 是通过 HTTP POST 方法传递给当前脚本的变量数组。

$_get 

使用 GET 方法从表单发送的信息对每个人都可见(所有 变量名称和值显示在 URL 中)。GET 要发送的信息。限制约为 2000 个字符。然而 由于变量显示在 URL 中,因此可以将 页。这在某些情况下可能很有用。

GET 可用于发送非敏感数据。

注意:永远不要使用GET来发送密码或其他敏感信息

$_post

使用 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值都嵌入在 HTTP 请求的正文中),并且 对要发送的信息量没有限制

此外,POST还支持高级功能,例如支持多部分 将文件上传到服务器时的二进制输入。

但是,由于变量未显示在 URL 中,因此无法为页面添加书签

创建一张名为table.php的php表格    一张名为table.html的表格

观察以下代码

  1. Html基本表单部分

<html>

<body>

<form action="welcome.php" method="POST">

Name: <input type="text" name="name"><br>

E-mail: <input type="text" name="email"><br>

<input type="submit">

</form>    //action部分定义了post应该发送到哪里去

</body>    //name部分中type定义了发送数据的类型为text文本

</html>    //name中的 name定义了在php脚本中post应当得到的键

  1. php部分
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>  //在这里 post全局变量接受来自table.html发送来的txt文本数据
</html>  //并且通过html将其标记在屏幕之上

重要函数部分

mysqli_fetch_array()

函数在 MySQLi 扩展中用于从结果集中获取一行作为关联数组、数字索引数组、或两者兼有的混合数组。它的返回值类型取决于传递给函数的参数

//利用这个函数,我们可以判断存储的用户是否已经存在

  1. MYSQLI_ASSOC: 当设置为该常量时,会返回关联数组,键是列名。
  2. MYSQLI_NUM: 数字索引数组,键是从 0 开始的整数,对应的是查询结果的列顺序。
  3. MYSQLI_BOTH: 这样的话,将同时返回关联数组和数字索引数组,每行数据都有两个版本。

如果没指定模式,默认返回类型取决于结果集的第一行,后续行将以最初选择的模式继续获取。

Die()

PHP 中的一个内置函数,它用于立即停止脚本执行并返回给客户端指定的消息。当你在代码中遇到严重错误或者需要中断整个程序流程的情况时,可以使用 die() 函数输出错误信息,同时终止当前页面的加载,不会执行后续的代码

这个函数通常与错误消息一起使用,比如当数据库连接失败、文件找不到等异常情况发生时,你可以捕获到错误并使用 die() 来快速显示错误信息并结束脚本,以便于开发者调试。

Query

  HP中,query通常是指对数据库的操作。它涉及到使用SQL查询语言从数据表中获取、修改或删除信息。PHP提供了一些内置函数,如mysqli_query()PDO::query()等,用于连接到数据库并执行查询操作

->运算符

       ->是一个运算符,也被称为"箭头""指向"运算符,主要用于访问对象属性和方法。当你有一个对象,并想要通过该对象调用其内部的属性或方法时,会使用这个符号。

->在这里的作用相当于运算符.,但在访问对象属性时,它明确表示你是在操作一个对象而不是一个变量。如果尝试用.来访问属性,比如echo person.name,那么就会报错,因为person只是一个变量名,不是对象实例。

class Person {

public $name;

    public function greet() {

        return "Hello, my name is " . $this->name;

    }

}

$person = new Person();

$person->name = "Alice"; 将Alice放入类所对应的属性中去

echo $person->name;  // 输出 "Alice"

echo $person->greet();  // 输出 "Hello, my name is Alice"

MySQLi_connect($servsername,$username,$password,$dbnamr)

MySQLi_connect是php建立与MySQL数据连接的函数

Try

在许多编程语言中,try 关键字用于开始一个异常处理块。当一段可能会抛出错误或异常的代码块需要被执行时,通常将其包裹在 try 块内。如果在这段代码执行期间发生异常,那么控制权会被立即转移到与之匹配的 catch 块中,catch 块负责捕获并处理这个异常,避免程序崩溃。

try:

    # 可能会抛出异常的代码

    result = int(input("请输入一个整数: "))

except ValueError:

    # 处理 ValueError 异常

    print("输入的不是有效的整数!")

except

except 是编程中用于异常处理的关键字之一,通常与 try 配合使用。当你预期某段代码可能会抛出异常时,可以在 try 块之后编写一个或多个 except 子句。每个 except 子句会捕获特定类型的异常,并提供一个代码块来处理这个异常情况,而不是让程序因为异常而终止运行。

       try {

    // 可能会抛出异常的代码块

    throw new TypeError("Some error");

} catch (TypeError $e) {

    // 捕获并处理 TypeError 类型的异常

    echo "Caught a TypeError: " . $e->getMessage();

} except (Exception $e) {  // 抛出所有不是 TypeError 的异常

    // 这里不会捕获到 TypeError,因为已经明确在前一个 catch 中处理了

    echo "Caught an Exception: " . $e->getMessage();

}

Pdo

              PDO PHP 数据对象(PHP Data Objects)的缩写,是一个 PHP 扩展,用于提供一致的方式来访问多种数据库,包括 MySQLPostgreSQLSQLite 等。PDO 提供了一种安全、高效和面向对象的方式来操作数据库,它支持预处理语句(PreparedStatement),这有助于防止 SQL 注入攻击,并可以提高性能。

       $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);语句,这行代码的作用是将PDO的错误模式设置为异常模式,使用异常模式的好处在于,你可以通过try-catch语句块来捕获这些异常

try { 

    // 假设$dsn, $username, $password已经正确定义 

    $conn = new PDO($dsn, $username, $password); 

    // 设置错误模式为异常 

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

 

    // 执行一些数据库操作 

} catch (PDOException $e) { 

    // 捕获异常并处理 

    echo "数据库错误:" . $e->getMessage(); 

    // 可以根据需要记录日志等 

}

Exec()

exec() 函数是一个非常有用的函数,它允许你在PHP脚本中执行一个外部程序,并且可以将外部程序的输出传递给PHP变量。这个函数在需要调用系统命令或执行外部脚本时特别有用。

escapeshellcmd()

       escapeshellcmd() 函数是 PHP 中用于转义 shell 命令字符串中可能会被解释为 shell 命令的特殊字符的函数。当你需要将用户输入或其他不可信的数据作为 shell 命令的一部分时,这个函数特别有用,因为它可以帮助防止命令注入攻击

       <?php 

$userInput = $_GET['cmd']; // 假设这是用户输入的命令名 

$safeCommand = escapeshellcmd($userInput); // 转义特殊字符 

exec("ls -l " . $safeCommand); // 现在安全多了 

?>

escapeshellcmd() 主要用于转义那些可能会被 shell 解释的特殊字符,但它不会验证命令的合法性或确保命令是安全的。

MySQ创建数据库

<?php
$servername = "localhost";
$username = "root";
$password = "202019利用变量存储基本信息

// Create connection
$conn = new mysqli($servername, $username, $password); 建立存储MySQL连接
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}   $conn 对象的一个属性nnect_error,如果不为空,则链接出错

// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
  echo "Database created successfully";
else {

//查询sql中是否存在通过$sql命令创建的数据库

 echo "Error creating database: " . $conn->error;
}
$conn->close();


?>

//利用PDO创建数据库

<?php

$servername=”localhost”;

$username=”root”;

$password=”202019”;

       Try {

//尝试一个可能会出错的程序

              $conn=newPDO(“mysql:host=$servername”,$username,$password);

//set th PDO error mode to exception

$conn->setAttribute(PDD::ATTR_ERRORMODE, PDD::ERRMOD_EXCEPTION);

$sql=”crate database mytest”;

$conn->exec($sql); //允许利用外部的程序

       Echo “Database created successfully<br>”;}

Catch(PDDException $e){  //将错误信息放入$e

              Echo $sql . “<br>”.$e->getMessage();

}

?>

}

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PHP中的数据库池是一种管理和复用数据库的技术,它可以提高数据库操作的性能和效率。通常,每次执行数据库操作时,都需要建立一个新的数据库,这会消耗较多的时间和系统资源。而连池则可以在应用程序启动时预先建立一定数量的数据库,并将这些连保存在连池中,供后续的数据库操作使用。 以下是一个简单的PHP数据库池的示例代码: ```php class ConnectionPool { private $connections = []; private $maxConnections = 10; public function __construct() { // 初始化连池,创建一定数量的数据库 for ($i = 0; $i < $this->maxConnections; $i++) { $connection = $this->createConnection(); $this->connections[] = $connection; } } public function getConnection() { // 从连池中获取一个可用的数据库 if (!empty($this->connections)) { return array_pop($this->connections); } // 连池中没有可用连时,创建一个新的连 return $this->createConnection(); } public function releaseConnection($connection) { // 释放数据库,放回连池中 if (count($this->connections) < $this->maxConnections) { $this->connections[] = $connection; } else { // 连池已满时,关闭连 $connection->close(); } } private function createConnection() { // 创建一个新的数据库 $connection = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password'); return $connection; } } ``` 使用连池的示例代码: ```php // 创建连池对象 $connectionPool = new ConnectionPool(); // 获取数据库 $connection = $connectionPool->getConnection(); // 执行数据库操作 // ... // 释放数据库,放回连池中 $connectionPool->releaseConnection($connection); ``` 通过使用连池,可以减少每次数据库操作时建立和关闭连的开销,提高性能和效率。同时,连池也可以控制最大连数,避免过多的连导致资源消耗过大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大懒的猫猫虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值