PHP安装Xdebug

1.下载对应扩展文件

查看phpinfo信息,如下图:

  •  php版本5.6.27则需下载对应5.6的文件;
  •  X86代表需要下载32位文件,反之下载64位;
  •  VC11正常下载VC11,若后期发现不对则再尝试VC11-TS;

 进入Xdebug官网下载页,https://xdebug.org/download.php 这里我下载PHP_5.6_VC11(32_bit);

        

2.安装与配置

  • 将刚刚下载的.dll文件放php的ext文件夹下,如我的:D:\phpStudy\php\php-5.6.27-nts\ext
  • 修改php.ini配置文件,在最后地方加入如下配置:
[XDebug]
;zend_extension ="D:\phpStudy\php\php-5.6.27-nts\ext\php_xdebug-2.5.4-5.6-vc11-nts.dll"
zend_extension =php_xdebug-2.5.4-5.6-vc11-nts.dll
xdebug.profiler_enable=on
xdebug.profiler_output_dir="D:\phpStudy\tmp\xdebug"
xdebug.trace_output_dir="D:\phpStudy\tmp\xdebug"
xdebug.remote_enable = on
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
  • 重启apache,再次查看phpinfo()信息, 搜索xdebug,如果出现如下则表示大功告捷,如图:

注意一:zend_extension可以为.dll文件的绝对路径如:"D:\phpStudy\php\php-5.6.27-nts\ext\php_xdebug-2.5.4-5.6-vc11-nts.dll";也可以为相对路径如:php_xdebug-2.5.4-5.6-vc11-nts.dll;

注意二:以上操作如果xdebug扩展仍然无法安装成功

           方案1.尝试下载不同后缀如:PHP 5.6 VC11 TS (32 bit)或:PHP 5.6 VC11 (32 bit);最后重启apache;

           方案1.尝试在不同Xdebug 版本下下载.dll文件,如:Xdebug 2.5.4或者Xdebug 2.5.3;最后重启apache;

### 使用 `ON DUPLICATE KEY UPDATE` 更新所有字段但排除主键MySQL 中,当使用 `ON DUPLICATE KEY UPDATE` 语句时,如果希望更新主键外的所有字段,可以通过显式列出需要更新的字段来实现。由于主键通常设置为 `AUTO_INCREMENT` 具有唯一性约束,因此在插入更新操作中不应直接修改主键字段。 #### 示例 假设有一个名为 `employees` 的表,定义如下: ```sql CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), department VARCHAR(50), salary DECIMAL(10, 2) ); ``` 现在需要插入一条记录,如果 `id` 冲突(例如,表中已存在相同的主键),则更新主键外的所有字段: ```sql INSERT INTO employees (id, name, department, salary) VALUES (101, 'Alice', 'Engineering', 85000.00) ON DUPLICATE KEY UPDATE name = 'Alice', department = 'Engineering', salary = 85000.00; ``` 在这个例子中,如果 `id = 101` 的记录已经存在,则会更新 `name`、`department` 和 `salary` 字段;如果不存在,则插入新记录。主键 `id` 在插入时指定,但在更新时不被修改 [^4]。 #### 使用 `VALUES()` 函数简化更新语句 当插入的数据较多时,可以使用 `VALUES()` 函数来引用插入时的值,从而简化更新语句: ```sql INSERT INTO employees (id, name, department, salary) VALUES (101, 'Alice', 'Engineering', 85000.00), (102, 'Bob', 'Marketing', 75000.00) ON DUPLICATE KEY UPDATE name = VALUES(name), department = VALUES(department), salary = VALUES(salary); ``` 在这个例子中,如果 `id` 冲突,`ON DUPLICATE KEY UPDATE` 子句会使用当前插入的值来更新对应的 `name`、`department` 和 `salary` 字段 [^4]。 #### 注意事项 - `ON DUPLICATE KEY UPDATE` 需要表中存在主键唯一索引,否则不会触发更新操作 [^1]。 - 如果更新的字段包含主键唯一索引列,并且更新后的值与其他记录冲突,会导致插入和更新都失败。 - 使用 `ON DUPLICATE KEY UPDATE` 时,自增字段(`AUTO_INCREMENT`)可能会跳过某些值,因为每次插入操作都会尝试分配一个新的自增值,即使最终执的是更新操作 [^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值