php通过pao连接mysql_php连接mysql数据库基础

bool define ( string name, mixed value [, bool case_insensitive] )

define函数作用是定义常量

define('DB_HOST', 'localhost');define('DB_USER', 'root');define('DB_PWD', '123456');define('DB_NAME', 'mtest');

resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] )

mysql_connect函数作用是打开或重复使用一个到 MySQL 服务器的连接。

$conn = mysql_connect('DB_HOST', 'DB_USER', 'DB_PWD');

resource mysql_query ( string query [, resource link_identifier] )

mysql_query函数作用是向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。

mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。 很有可能一条查询执行成功了但并未影响到或并未返回任何行。

$query = 'select * from message';$result = mysql_query($query);

array mysql_fetch_array ( resource result [, int result_type] )

mysql_fetch_array函数作用是从结果集中取得一行作为关联数组,或数字数组,或二者兼有,如果没有更多行则返回 FALSE。

mysql_fetch_array($result,MYSQL_NUM)           =======      mysql_fetch_array($result)

mysql_fetch_array($result,MYSQL_ASSOC)       =======      mysql_fetch_assoc($result)

mysql_fetch_array($result, MYSQL_ASSOC)

bool mysql_free_result ( resource result )

mysql_free_result函数作用是mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放。 如果成功则返回 TRUE,失败则返回 FALSE。

mysql_free_result($result);

bool mysql_close ( [resource link_identifier] )

mysql_close函数作用是mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接。 通常不需要使用 mysql_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。

mysql_close($conn);

示例:

define('DB_HOST', 'localhost');define('DB_USER', 'root');define('DB_PWD', '123456');define('DB_NAME', 'mtest');$conn = mysql_connect('DB_HOST', 'DB_USER', 'DB_PWD');mysql_select_db(DB_NAME, $conn);mysql_query('SET NAMES UTF8');$query = 'select * from message';$result = mysql_query($query);mysql_fetch_array($result,MYSQL_ASSOC);mysql_free_result($result);mysql_close($conn);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
优化以下SQL select pao.id, pao.order_no, pao.apply_time, pao.purchase_user_id, pao.purchase_user_name, pao.apply_user_id, pao.apply_user_name, pao.apply_department_id, pao.apply_department_name, pao.apply_end_time, pao.create_user_id, pao.create_user_name, pao.approve_type, pao.approve_user_id, pao.approve_user_name, pao.approve_time, pao.description, pao.order_type, pao.purchase_type, pao.storage_type, pao.compose_order_no, pao.company_id, pao.delete, pao.create_time, pao.update_time, pao.supplier_id, pao.image_path, pao.contract_id, pao.status, pao.invoice_signer_name, pao.total_amount, pao.total_amount_tax, pao.purchase_status, pao.cancel_reason, pao.print_status, pao.demand_id, pao.arrival_status, pao.supervise_num, pao.supervise_date, pao.merge_apply_id, pao.deadline, pao.remind , s.name as supplierName, paod.amount, cm.return_status as returnStatus, cm.inventory_status as inventoryStatus, cm.stock_remark, cm.merge_flag, cm.signature_file, cm.department_pass, cm.receipt_file, cm.amount_paid, cm.amount_unpaid, cm.contract_name, cm.status as contractStatus, cm.contract_no, cm.contract_amount, paod.product_name, cm.advance_payment, cm.advance_ratio, cm.currency_unit from purchase_apply_order pao left join supplier s on pao.supplier_id = s.id left join ( SELECT GROUP_CONCAT(distinct p.product_name) product_name, sum(IFNULL(amount_tax, 0)) amount, apply_order_no from purchase_apply_order_details pa left join product p on p.pn_code = pa.product_code where p.company_id = 29 GROUP BY apply_order_no ) paod on paod.apply_order_no = pao.order_no left join contract_management cm on pao.contract_id = cm.id where pao.delete = 0 and pao.company_id = 29 and deadline <= '2023-05-25 15:34:00.01' and remind = 0 and arrival_status in( 0 , 1 ) order by pao.create_time desc;
05-25
首先,我们可以对该 SQL 查询语句进行简化,只选择需要的字段而不是全部选择。其次,我们可以尝试添加索引以加快查询速度。 以下是优化后的 SQL 查询语句: ``` SELECT pao.id, pao.order_no, pao.apply_time, pao.purchase_user_id, pao.purchase_user_name, pao.apply_user_id, pao.apply_user_name, pao.apply_department_id, pao.apply_department_name, pao.apply_end_time, pao.create_user_id, pao.create_user_name, pao.approve_type, pao.approve_user_id, pao.approve_user_name, pao.approve_time, pao.description, pao.order_type, pao.purchase_type, pao.storage_type, pao.compose_order_no, pao.company_id, pao.delete, pao.create_time, pao.update_time, pao.supplier_id, pao.image_path, pao.contract_id, pao.status, pao.invoice_signer_name, pao.total_amount, pao.total_amount_tax, pao.purchase_status, pao.cancel_reason, pao.print_status, pao.demand_id, pao.arrival_status, pao.supervise_num, pao.supervise_date, pao.merge_apply_id, pao.deadline, pao.remind, s.name AS supplierName, paod.amount, cm.return_status AS returnStatus, cm.inventory_status AS inventoryStatus, cm.stock_remark, cm.merge_flag, cm.signature_file, cm.department_pass, cm.receipt_file, cm.amount_paid, cm.amount_unpaid, cm.contract_name, cm.status AS contractStatus, cm.contract_no, cm.contract_amount, paod.product_name, cm.advance_payment, cm.advance_ratio, cm.currency_unit FROM purchase_apply_order pao LEFT JOIN supplier s ON pao.supplier_id = s.id LEFT JOIN ( SELECT GROUP_CONCAT(DISTINCT p.product_name) product_name, SUM(IFNULL(amount_tax, 0)) amount, apply_order_no FROM purchase_apply_order_details pa LEFT JOIN product p ON p.pn_code = pa.product_code WHERE p.company_id = 29 GROUP BY apply_order_no ) paod ON paod.apply_order_no = pao.order_no LEFT JOIN contract_management cm ON pao.contract_id = cm.id WHERE pao.delete = 0 AND pao.company_id = 29 AND deadline <= '2023-05-25 15:34:00.01' AND remind = 0 AND arrival_status IN (0, 1) ORDER BY pao.create_time DESC; ``` 我们可以为 `purchase_apply_order` 表的 `company_id` 字段和 `deadline` 字段以及 `remind` 字段创建索引。同时,也可以为 `arrival_status` 字段和 `delete` 字段创建索引。这可以大大加快查询速度。 ``` CREATE INDEX idx_purchase_apply_order_company_id_deadline_remind ON purchase_apply_order (company_id, deadline, remind); CREATE INDEX idx_purchase_apply_order_arrival_status_delete ON purchase_apply_order (arrival_status, delete); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值