使用sqlsrv_connect连接SQL数据库时出现Array错误求助
问题分析与解决
1. 核心错误:用错了数据库连接扩展
你用sqlsrv_connect()是微软SQL Server专属的连接函数,但phpMyAdmin管理的是MySQL/MariaDB数据库,两者完全不兼容,这才是连接失败的根本原因。
2. 正确的数据库连接方式
XAMPP默认已经启用了MySQLi和PDO_MySQL扩展,直接用这两个就行,以下是两种可行的连接代码:
方法一:MySQLi 面向过程写法
<html> <head> <meta http-equiv="refresh" content="2"> </head> <body> <?php // XAMPP默认MySQL用户名是root,密码为空(如果安装时设置了密码就填你的密码) $servername = "localhost"; $username = "root"; $password = ""; $dbname = "chat"; // 创建连接 $link = mysqli_connect($servername, $username, $password, $dbname); // 检查连接 if (!$link) { // 用mysqli_error获取字符串格式的错误信息,避免数组转字符串警告 die('Could not connect: ' . mysqli_error($link)); } else { echo "数据库连接成功"; } ?> </body> </html>
方法二:PDO 写法(更推荐,支持多种数据库)
<html> <head> <meta http-equiv="refresh" content="2"> </head> <body> <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "chat"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // 设置PDO错误模式为异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "数据库连接成功"; } catch(PDOException $e) { die('Could not connect: ' . $e->getMessage()); } ?> </body> </html>
3. 原错误里的数组转字符串警告原因
sqlsrv_errors()返回的是数组格式的错误信息,你直接把它和字符串'Could not connect: '拼接,PHP就会抛出数组转字符串的警告。不过这个问题是因为用错了扩展导致的,换用MySQL的扩展后就不会出现了。
4. 实现表数据读写的简单示例
假设你已经在chat数据库里创建了名为messages的表(字段比如id、content、send_time),以下是读写示例:
读取聊天记录(MySQLi)
// 连接成功后执行查询 $sql = "SELECT content, send_time FROM messages ORDER BY send_time DESC"; $result = mysqli_query($link, $sql); if (mysqli_num_rows($result) > 0) { // 输出每条记录 while($row = mysqli_fetch_assoc($result)) { echo "<p>" . $row["send_time"] . ": " . $row["content"] . "</p>"; } } else { echo "暂无聊天记录"; }
插入新消息(MySQLi)
// 假设表单提交的消息内容是$_POST['message'] $message = mysqli_real_escape_string($link, $_POST['message']); // 防止SQL注入 $send_time = date('Y-m-d H:i:s'); $sql = "INSERT INTO messages (content, send_time) VALUES ('$message', '$send_time')"; if (mysqli_query($link, $sql)) { echo "消息发送成功"; } else { echo "发送失败: " . mysqli_error($link); }
内容的提问来源于stack exchange,提问作者Jack Stenander
相关产品推荐
相关产品推荐

