首页 > 数据库 >php调用sql server过程记录

php调用sql server过程记录

时间:2024-02-12 22:44:24浏览次数:47  
标签:echo sqlsrv server pdo 版本 sql php

  1. 更新微软源,需要安装微软的底层库
    curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
  2. 安装依赖底层库
    yum install -y msodbcsql mssql-tools unixODBC-devel
  3. 根据php版本选择对应的pdo_sqlsrv扩展版本,查询地址为http://pecl.php.net/package/pdo_sqlsrv 对于7.4版本可以用5.10.1的版本
  4. 下载对应版本的pdo_sqlsrv
    wget http://pecl.php.net/package/pdo_sqlsrv wget http://pecl.php.net/get/pdo_sqlsrv-5.10.1.tgz
  5. 编译安装,代码语句一行一行执行
    tar -zxvf pdo_sqlsrv-5.10.1.tgz cd pdo_sqlsrv-5.10.1 /www/server/php/74/bin/phpize ./configure --with-php-config=/www/server/php/74/bin/php-config make && make install echo "extension = pdo_sqlsrv.so" >> /www/server/php/74/etc/php.ini echo "extension = pdo_sqlsrv.so" >> /www/server/php/74/etc/php-cli.ini /etc/init.d/php-fpm-74 reload
    需要把相关路径替换为自己的实际路径
  6. 检查是否安装成功
    /www/server/php/74/bin/php -m|grep -i sqlsrv
  7. 连接数据库并测试
    ` <?php
    $host = "155.254.244.31";
    $dbname = "AionWorld_110";
    $user = "urygdc17463_SQLLogin_1_d6octrr7tr";
    $pass = "urygdc17463_SQLLogin_1_d6octrr7tr";

try {
// 创建数据库连接
$dbh = new PDO("sqlsrv:Server=$host;Database=$dbname", $user, $pass);

// 创建表格
$createTableQuery = "CREATE TABLE MyTable (
    id INT PRIMARY KEY,
    name VARCHAR(100)
)";
$dbh->exec($createTableQuery);
echo "表格创建成功!\n";

// 插入数据
$insertDataQuery = "INSERT INTO MyTable (id, name) VALUES (1, 'John'), (2, 'Jane'), (3, 'Mike')";
$dbh->exec($insertDataQuery);
echo "数据插入成功!\n";

// 读取数据
$selectDataQuery = "SELECT * FROM MyTable";
$stmt = $dbh->query($selectDataQuery);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row) {
    echo "ID: " . $row['id'] . ", Name: " . $row['name'] . "\n";
}

// 关闭数据库连接
$dbh = null;

} catch (PDOException $e) {
echo "连接数据库失败: " . $e->getMessage();
}
?>
8. 不出意外的话,遇到了意外,经过反复测试活segmentfault,换装其他版本php同样问题,凭感觉,应该是ssl出问题了。 进过排查,发现是安装node.js修改了系统环境,导致openssl不同版本混合调用,删除node.js环境正常。定位问题的关键点:1、更换了3个php版本,都会报错,可以判断是系统问题,和php版本无关 2、 挂gdb测试最简单的连接代码,抛出堆栈,搜索答案无果,经过仔细观察发现openssl存在不同版本混合调用问题,根据文件创建日期判断同一天的新建文件,判断出pm2和node.js有问题,卸载后openssl指定版本确实也被卸载了,问题解决。 挂上gdb调试后打印部分堆栈如下:

0 0x00007ffff2786ec6 in __strcmp_sse42 () from /lib64/libc.so.6

1 0x00007ffff645dc65 in lh_insert () from /usr/local/openssl/lib/libcrypto.so.1.0.0

2 0x00007ffff63ac37f in OBJ_NAME_add () from /usr/local/openssl/lib/libcrypto.so.1.0.0

3 0x00007fffe8449c18 in ossl_init_ssl_base_ossl_ () from /lib64/libssl.so.1.1

4 0x00007ffff222f20b in __pthread_once_slow () from /lib64/libpthread.so.0

5 0x00007fffe811cd29 in CRYPTO_THREAD_run_once () from /lib64/libcrypto.so.1.1

6 0x00007fffe8449e63 in OPENSSL_init_ssl () from /lib64/libssl.so.1.1

`

标签:echo,sqlsrv,server,pdo,版本,sql,php
From: https://www.cnblogs.com/ynhi/p/18014218

相关文章

  • mysql5.7安装教程
     下载MySQL或者使用刚才下载的Mysql文件都行打开下载链接:https://dev.mysql.com/downloads/windows/installer/5.7.html 点击Download进行下载弹出页面 点击Nothanks进行下载下载下来的文件名是mysql-installer-community-5.7.24.0.msi双击文件名称进行安装如......
  • 第二十一天:mysql架构和存储引擎
    MySQL是C/S架构的,connectors是连接器;可供NativeCAPI、JDBC、ODBC、NET、PHP、Perl、Python、Ruby、Cobol等连接mysql;ODBC叫开放数据库(系统)互联,opendatabaseconnection;JDBC是主要用于java语言利用较为底层的驱动连接数据库;以上这些,站在编程角度可以理解为连入数据库管理系......
  • 第二十一天:mysql服务器配置和状态
    一、服务器配置和状态官方帮助文档:https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.htmlhttps://dev.mysql.com/doc/refman/5.7/en/server-option-variable-reference.htmlhttps://mariadb.com/kb/en/library/full-list-of-mariadb-options-syste......
  • 【性能测试】Mysql之慢查询01
    一、Mysql常用监控指标慢查询SQL慢查询:指执行速度低于设置的阀值的SQL语句作用:帮助定位查询速度较慢的SQL语句,方便更好的优化数据库系统的性能1、开启MySQL慢查询日志参数说明:slow_query_log:慢查询日志开启状态[ON:开启,OFF:关闭]slow_query_log_file:慢查询日志存放位置......
  • kube-apiserver限流配置
    k8sv1.19.0APF之前限流客户端访问kube-apiserver,限流参数有max-mutating-requests-inflight(默认值是200,对应操作类请求)和max-requests-inflight(默认值是400,对应查询类请求)。staging/src/k8s.io/apiserver/pkg/server/filters/maxinflight.goWithMaxInFlightLimit函数分别创建......
  • 第二十一天:MYSQL视图和存储过程
    一、视图VIEW视图:虚拟表,保存有实表的查询结果,相当于别名利用视图,可以隐藏表的真实结构,在程序中利用视图进行查询,可以避免表结构的变化,而修改程序,降低程序和数据库之间的耦合度创建方法:CREATE VIEWview_name[(column_list)]  ASselect_statement  [......
  • 第二十天:mysql查询:DML、DDL、DQL
    一、DML语句DML:INSERT,DELETE,UPDATE1、INSERT语句功能:一次插入一行或多行数据语法INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE]  [INTO]tbl_name[(col_name,...)]  {VALUES|VALUE}({expr|DEFAULT},...),(...),...  [ONDUPLIC......
  • SQL语句执行顺序相关问题
    注意本文是SQL执行顺序,不是MySQLServer内部执行流程。MySQL并非像PostgreSQL(被认为是最接近SQL标准的数据库之一)一样严格按照SQL标准,MySQL执行引擎会根据查询的具体情况和优化策略来决定具体的执行顺序,所以SQL执行顺序是理论顺序。书写顺序select...from...join...on...wher......
  • 第二十天:mysql基本语法
    一、语法标准1、数据库对象和命名数据库的组件(对象):数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等命名规则:必须以字母开头,后续可以包括字母,数字和三个特殊字符(#_$)不要使用MySQL的保留字2、SQL语句分类DDL:DataDefinationLanguage数据定义......
  • 【数据库】postgressql设置数据库执行超时时间
    在这篇文章中,我们将深入探讨PostgreSQL数据库中的一个关键设置:SETstatement_timeout。这个设置对于管理数据库性能和优化查询执行时间非常重要。让我们一起来了解它的工作原理以及如何有效地使用它。什么是statement_timeout?statement_timeout是一个PostgreSQL服务器参数,用于设......