PHP执行MYSQL语句

$exec = " select * from dede_addonarticle where aid = ' " . $id . " ' " ;    // 把sql语句存到变量exec内
$result = mysql_query ( $exec );                                                        
$rs = mysql_fetch_object ( $result );

 

 

mysql_query

送出一个 query 字串。

语法: int mysql_query(string query, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

 

 
内容说明

本函式送出 query 字串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程式会自动寻找最近开启的 ID。当 query 查询字串是 UPDATE、INSERT 及 DELETE 时,传回的可能是 true 或者 false;查询的字串是 SELECT 则传回新的 ID 值。joey@samaritan.com (09-Feb-1999) 指出,当传回 false 时,并不是执行成功但无传回值,而是查询的字串有错误。 

 

mysql_fetch_object

传回物件资料。

语法: object mysql_fetch_object(int result, int [result_typ]);

传回值: 物件

函式种类: 资料库功能

 

 
内容说明

本函式用来将查询结果 result 拆到物件变数中。使用方法和 mysql_fetch_array() 几乎相同,不同的地方在于本函式传回资料是物件而不是阵列。若 result 没有资料,则传回 false 值。另外值得注意的地方是,取回的物件资料的索引只能是文字而不能用数字,这是因为物件的特性。物件资料的特性中所有的属性 (property) 名称都不能是数字,因此只好乖乖使用文字字串当索引了。参数 result_typ是一个常数值,有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。关于速度方面,本函式的处理速度几乎和 mysql_fetch_row()mysql_fetch_array() 二函式差不多,要用哪个函式还是看使用的需求决定。

<think>嗯,用户问的是PHP MySQL语句,我需要先弄清楚他们到底想知道什么。可能他们是想了解如何在PHP中使用MySQL,比如连接数据库、执行查询之类的。首先,我应该回忆一下PHP中常用的MySQL扩展,比如MySQLi和PDO,这两个现在比较推荐使用,因为旧的mysql扩展已经被废弃了。 接下来,用户可能想知道基本的操作步骤,比如连接数据库,执行查询,处理结果。需要分步骤解释,可能还要注意区分MySQLi的过程式和面向对象式两种写法。另外,防止SQL注入也是重要的一点,应该提到预处理语句。 然后,可能需要给出一些示例代码,比如查询、插入、更新、删除等操作。同时,要注意代码的安全性,比如使用参数绑定。用户可能对错误处理也感兴趣,所以应该包括try-catch块或者错误报告的设置。 另外,用户可能混淆了PHPMySQL语句,需要明确PHP执行的是SQL语句,而PHP本身负责与数据库交互。所以可能需要解释清楚两者之间的关系,比如如何用PHP发送SQL命令到MySQL数据库。 可能还需要提到PDO的优势,比如支持多种数据库,而MySQLi只支持MySQL。根据用户的情况,可能需要推荐使用哪种扩展,比如如果是新项目,可能推荐PDO,因为它更灵活。 还要注意用户的使用场景,可能是初学者,所以示例代码应该简单明了,避免复杂的内容。同时,提醒关闭数据库连接,虽然PHP会自动处理,但显式关闭是个好习惯。 最后,确保内容结构清晰,分点说明,比如连接数据库、执行查询、预处理语句、事务处理等部分。这样用户看起来更清楚,容易理解。</think>PHPMySQL 结合使用时,通常通过 SQL 语句操作数据库。以下是常见的操作和语句示例: --- ### 一、连接 MySQL 数据库 使用 **MySQLi** 或 **PDO** 扩展(推荐): ```php // MySQLi 连接 $conn = new mysqli("localhost", "username", "password", "database"); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // PDO 连接 try { $pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("连接失败: " . $e->getMessage()); } ``` --- ### 二、执行 SQL 语句 #### 1. 查询数据(SELECT) ```php // MySQLi $sql = "SELECT id, name FROM users WHERE age > 20"; $row = $result->fetch_assoc()) { echo "ID: " . $row["id"] . ", 姓名: " . $row["name"]; } // PDO $stmt = $pdo->query("SELECT * FROM users"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { print_r($row); } ``` #### 2. 插入数据(INSERT) ```php // MySQLi $sql = "INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com')"; if ($conn->query($sql) === TRUE) { echo "插入成功"; } // PDO(预处理防 SQL 注入) $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)"); $stmt->execute(["李四", "lisi@example.com"]); ``` #### 3. 更新数据(UPDATE) ```php $sql = "UPDATE users SET email='new@example.com' WHERE id=1"; $conn->query($sql); ``` #### 4. 删除数据(DELETE) ```php $sql = "DELETE FROM users WHERE id=2"; $sql); ``` --- ### 三、预处理语句(防止 SQL 注入) ```php // MySQLi 预处理 $stmt = $conn->prepare("SELECT * FROM users WHERE id = ?"); $stmt->bind_param("i", $id); // i 表示整数类型 $id = 1; $stmt->execute(); // PDO 预处理 $stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name"); $stmt->execute([":name" => "张三"]); ``` --- ### 四、错误处理 ```php // MySQLi if (!$conn->query($sql)) { echo "错误: " . $conn->error; } // PDO 自动通过 try-catch 捕获异常 ``` --- ### 五、关闭连接 ```php $conn->close(); // MySQLi $pdo = null; // PDO ``` --- ### 六、事务处理(保证数据一致性) ```php // MySQLi $conn->begin_transaction(); try { $conn->query("UPDATE account SET balance = balance - 100 WHERE user_id=1"); $conn->query("UPDATE account SET balance = balance + 100 WHERE user_id=2"); $conn->commit(); } catch (Exception $e) { $conn->rollback(); } // PDO $pdo->beginTransaction(); // ...执行操作... $pdo->commit(); ``` --- ### 注意事项: 1. **防 SQL 注入**:始终使用预处理语句(`prepare` + 参数绑定)。 2. **错误调试**:开启错误报告(`mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)`)。 3. **扩展选择**:新项目建议使用 PDO(支持多种数据库)。 如果需要具体场景的代码示例,可以进一步说明需求!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值