PHP知识点——4

来源:互联网 发布:范思哲男装高仿淘宝 编辑:程序博客网 时间:2024/06/13 10:38

数据库:
连接MYSQL:

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
    $conn = new PDO("mysql:host=$servername;dbname=myDB",$username, $password);
    echo "Connectedsuccessfully"; 
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

关闭连接:
连接在脚本执行完后会自动关闭。你也可以使用以下代码来关闭连接。

$conn = null;

关于PDO安装的教程:http://php.net/manual/en/pdo.installation.php

新建数据库:

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
    $conn = newPDO("mysql:host=$servername;dbname=myDB", $username, $password);
    // 设置 PDO 错误模式为异常
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "CREATE DATABASE myDBPDO";
    // 使用 exec() ,因为没有结果返回
    $conn->exec($sql);

    echo "Database createdsuccessfully<br>";
    }
catch(PDOException $e)
    {
    echo $sql ."<br>" . $e->getMessage();
    }

$conn = null;
?>

创建表:
$sql = "CREATE TABLE MyGuests (
    id INT(6) UNSIGNEDAUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOTNULL,
    lastname VARCHAR(30) NOTNULL,
    email VARCHAR(50),
    reg_date TIMESTAMP
    )";

    // use exec() because noresults are returned
    $conn->exec($sql);

插入数据:
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe','john@example.com')";
    // use exec() because noresults are returned
    $conn->exec($sql);

插入多条数据:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = newPDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode toexception
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 开始事务
    $conn->beginTransaction();
    // SQL 语句
    $conn->exec("INSERTINTO MyGuests (firstname, lastname, email) 
    VALUES ('John', 'Doe','john@example.com')");
    $conn->exec("INSERTINTO MyGuests (firstname, lastname, email) 
    VALUES ('Mary', 'Moe', 'mary@example.com')");
    $conn->exec("INSERTINTO MyGuests (firstname, lastname, email) 
    VALUES ('Julie', 'Dooley','julie@example.com')");

    // commit the transaction
    $conn->commit();
    echo "New recordscreated successfully";
    }
catch(PDOException $e)
    {
    // roll back the transactionif something failed
    $conn->rollback();   //回滚
    echo $sql ."<br>" . $e->getMessage();
    }

$conn = null;
?>

就像j2ee中的tranction tx = ..,tx.commit()。

 

预处理:

预处理语句用于执行多个相同的 SQL语句,并且执行效率更高。

预处理语句的工作原理如下:

1.     预处理:创建 SQL语句模板并发送到数据库。预留的值使用参数 "?"标记。例如:INSERT INTO MyGuests (firstname, lastname, email)VALUES(?, ?, ?)

2.     数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出

3.     执行:最后,将应用绑定的值传递给参数("?"标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。

相比于直接执行SQL语句,预处理语句有两个主要优点:

·        预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)

·        绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句

·        预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。

// 预处理 SQL 并绑定参数
    …

$stmt= $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES (:firstname,:lastname, :email)");
   $stmt->bindParam(':firstname', $firstname);
   $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email',$email);

    // 插入行
    $firstname ="John";
    $lastname = "Doe";
    $email ="john@example.com";
    $stmt->execute();

    // 插入其他行
    $firstname ="Mary";
    $lastname = "Moe";
    $email ="mary@example.com";
    $stmt->execute();

    // 插入其他行
    $firstname ="Julie";
    $lastname ="Dooley";
    $email ="julie@example.com";
    $stmt->execute();

查询:

几种写法:

    $sql="select * from myguests";//可加where子句

    $resultAll=$conn->query($sql);//返回结果,用query函数

foreach($resultAllas $result)

    {        // 输出结果集中的数据

    echo $result['firstname'].' ';

    echo $result['lastname'].' ';

    echo $result['email'].'<br>';

    }

 

    $col= $resultAll->fetchColumn(2);//取第一行结果的某个列,默认第一列

    echo$col;

 

    $col= $resultAll->fetchAll();//全部

    print_r($col);

  

sql可加where子句进一步查询;可加order by等进行排序。

 

更新:

$sql="update myguests set email='hunterlew@163.com'where id=1";

echo$conn->exec($sql);

注释:请注意UPDATE语法中的 WHERE子句。WHERE子句规定了哪些记录需要更新。如果您想省去 WHERE子句,所有的记录都会被更新!

 

删除(略)

 

总结:

使用PDO数据库抽象层往数据表中更新、插入或者删除数据,都是通过PDOexec()方法,而且exec()执行完毕还会返回影响的数据行总数。查询则用query()方法,返回查询结果,可用foreach($resultAll as $result)遍历。

0 0
原创粉丝点击