$db = new mysqli("localhost", "username", "password", "databaseName"); 或者: @ $db = mysqli_connect("localhost", "username", "password", "databaseName"); $db->close(); 或者: mysqi_close($db); $db->select_db(databaseName); 或者: mysqli_select_db(databaseName); 查询:
$query = "SELECT * from dbName"; $result = $db->query($query); 或者: mysqli_query($db, $query); $num_results = $result->num_rows; 或者: $num_results = mysqli_num_rows($result); $row = $result->fetch_assoc(); 或者: $row = mysqli_fetch_assoc($result); 获取每一行的字段的值:
$row["books"] $row = $result->fetch_object(); 或者: $row = mysqli_fetch_object($result); 然后可以通过$row[0}、$row[1]或$row->title、$row->author等来访问每个属性。
$result->free();
或者:
mysqli_free_result($result);
$mysql = new PDO("mysql:host=localhost", $user, $password); $mysql = new PDO("mysql:host=localhost;port=8090", $user, $password); $mysql = new PDO("mysql:host=localhost;port=8090;dbname=android", $user, $password); // 连接到一个本地MySQL服务器 $mysql = new PDO("mysql:unix_socket=/tmp/mysql.sock", $user, $password); 譬如:
$dbhost = "localhost"; $dbdatabase = "android"; $username = "android"; $userpass = "android"; $dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase; try { $dbh = new PDO($dsn,$username,$userpass); foreach($dbh->query('SELECT * from test') as $row) { print_r($row); } // 关闭数据库连接 $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } $conn = null; <?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(PDO::ATTR_PERSISTENT => true)); ?> try { $dbh->beginTransaction(); $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')"); $dbh->exec("insert into salarychange (id, amount, changedate) values (23, 50000, NOW())"); $dbh->commit(); } catch (Exception $e) { $dbh->rollBack(); echo "Failed: " . $e->getMessage(); } | 方法名 | 描述 |
|---|---|
| commit() | 提交一个事务。 |
| __construct() | 创建一个表示数据库连接的 PDO 实例。 |
| errorInfo() | 返回最后一次操作数据库的错误信息。 |
| exec() | 执行一条 SQL 语句,并返回受影响的行数。 |
| getAttribute() | 取回一个数据库连接的属性。 |
| lastInsertId() | 返回最后插入行的ID或序列值。 |
| prepare() | 备要执行的SQL语句并返回一个 PDOStatement 对象。 |
| query() | 执行 SQL 语句,返回PDOStatement对象,可以理解为结果集。 |
| quote() | 为SQL语句中的字符串添加引号。 |
| setAttribute() | 设置属性。 |
| 方法名 | 描述 |
|---|---|
| bindColumn() | 绑定一列到一个 PHP 变量。 |
| bindParam() | 绑定一个参数到指定的变量名。 |
| bindValue() | 把一个值绑定到一个参数。 |
| closeCursor() | 关闭游标,使语句能再次被执行。 |
| columnCount() | 返回结果集中的列数。 |
| debugDumpParams() | 打印一条 SQL 预处理命令。 |
| errorCode() | 获取跟上一次语句句柄操作相关的 SQLSTATE。 |
| errorInfo() | 获取跟上一次语句句柄操作相关的扩展错误信息。 |
| execute() | 执行一条预处理语句。 |
| fetch() | 从结果集中获取下一行。 |
| fetchAll() | 返回一个包含结果集中所有行的数组。 |
| fetchColumn() | 从结果集中的下一行返回单独的一列。 |
| fetchObject() | 获取下一行并作为一个对象返回。 |
| getAttribute() | 检索一个语句属性。 |
| getColumnMeta() | 返回结果集中一列的元数据。 |
| nextRowset() | 在一个多行集语句句柄中推进到下一个行集。 |
| rowCount() | 返回受上一个 SQL 语句影响的行数。 |
| setAttribute() | 设置一个语句属性。 |
| setFetchMode() | 为语句设置默认的获取模式。 |
(1)问题:数据为中文时,在数据库中可以正常显示,但是一在前台调用就出现乱码。
解决:
1)首先检查php文件是否有编码格式声明头文件,如
header('COntent-Type:text/html;charset=utf-8'); ;如果是html文件则要检查是否有meta声明,如 <meta charset="utf-8" /> ;
2)如果php文件的编码格式没问题,那问题可能出现在抓取数据过程中,数据的编码格式有误而导致乱码。可以尝试在数据库查询前插入编码格式的显式定义: $db->query("SET NAMES 'UTF8'"); 。