You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity与SQL Server通过PHP对接:num_rows函数无效,求解决方法

问题解决:替代num_rows的方法及代码优化

你遇到的num_rows无法识别的问题,是因为SQL Server的PHP扩展(sqlsrv)不支持通过对象属性->num_rows获取行数,需要使用sqlsrv扩展提供的专用函数替代,同时还要优化代码避免安全风险。

替代方案1:用sqlsrv_has_rows()判断数据是否存在

这个函数直接检查结果集是否包含行,完美适配你判断ID是否存在的场景:

$loginID = $_POST["loginID"];
$loginName = $_POST["loginName"];
$loginEmail = $_POST["loginEmail"];

// 使用参数化查询避免SQL注入风险
$sql = "SELECT id FROM testing WHERE id = ?";
$params = array($loginID);
$result = sqlsrv_query($conn, $sql, $params);

if ($result && sqlsrv_has_rows($result)) {
    echo "Staff ID exists";
} else {
    echo "Creating user...";
    // 插入数据同样使用参数化查询
    $sql2 = "INSERT INTO testing (id,name,email) VALUES (?, ?, ?)";
    $params2 = array($loginID, $loginName, $loginEmail);
    $result1 = sqlsrv_query($conn, $sql2, $params2);

    if ($result1) {
        echo " New user has been created successfully";
    } else {
        echo "Error: Insert failed. ";
        // 获取sqlsrv专属错误信息
        if( ($errors = sqlsrv_errors() ) != null) {
            foreach( $errors as $error ) {
                echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
                echo "Code: ".$error[ 'code']."<br />";
                echo "Message: ".$error[ 'message']."<br />";
            }
        }
    }
}

替代方案2:用sqlsrv_num_rows()获取具体行数

如果需要知道结果集的确切行数,可使用这个函数,但需要先设置结果集为可滚动类型:

$sql = "SELECT id FROM testing WHERE id = ?";
$params = array($loginID);
// 设置结果集为可滚动,确保sqlsrv_num_rows能返回正确行数
$options = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
$result = sqlsrv_query($conn, $sql, $params, $options);

if ($result) {
    $rowCount = sqlsrv_num_rows($result);
    if ($rowCount > 0) {
        echo "Staff ID exists";
    } else {
        // 执行用户创建逻辑
    }
}

额外优化说明

  1. SQL注入防护:原代码直接拼接POST参数到SQL语句中存在严重安全风险,必须用参数化查询(?占位符+参数数组)替代。
  2. 错误处理修正:sqlsrv扩展的错误信息需通过sqlsrv_errors()获取,而非$conn->error(这是mysqli扩展的用法)。
  3. Unity端代码无需修改:你的Unity注册逻辑代码完全正常,只要PHP端返回正确文本,Unity就能正常接收并处理。

内容的提问来源于stack exchange,提问作者Shifaul Rosman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:32:20