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

如何修改PHP代码实现向SSMS备注表插入关联用户ID的记录?

问题与解决方案

问题背景

我在SSMS中有两张表:

  1. 用户凭证表(testing):
idname
1007max
1008james
  1. 备注表(remarks):
idremarks
1007user input 1
1007user input 2
1008user input 1

当前我的PHP代码通过两次INSERT操作分别插入用户id和备注内容,导致备注表中生成两条独立记录,不符合需求。需要修改代码实现将用户id与对应备注插入到同一条记录中。

原代码:

$stmt = sqlsrv_prepare($conn, "INSERT INTO remarks (id) SELECT id FROM testing WHERE id = ?", array($loginID));

if (sqlsrv_execute($stmt)) {
    echo "Record inserted successfully.";
} else {
    echo "Error inserting record: " . sqlsrv_errors();
}

$stmt1 = sqlsrv_prepare($conn, "INSERT INTO remarks (remarks) VALUES (?)", array($remarks1));
if (sqlsrv_execute($stmt1)) {
    echo "Record inserted successfully.";
} else {
    echo "Error inserting record: " . sqlsrv_errors();
}

解决方案

只需把两次INSERT合并成一次,同时插入id和remarks两个字段即可,提供两种实现方式:

方式一:直接使用VALUES子句

直接将用户ID和备注作为参数传入,一次性插入同一条记录:

// 准备同时插入id和remarks的SQL语句
$stmt = sqlsrv_prepare($conn, "INSERT INTO remarks (id, remarks) VALUES (?, ?)", array($loginID, $remarks1));

if (sqlsrv_execute($stmt)) {
    echo "Record inserted successfully.";
} else {
    // 格式化错误信息,避免输出数组结构
    $errors = sqlsrv_errors();
    echo "Error inserting record: " . $errors[0]['message'];
}

方式二:结合SELECT验证用户ID后插入

如果需要确保插入的用户ID确实存在于testing表中,用这种方式可以避免无效数据插入:

$stmt = sqlsrv_prepare($conn, "INSERT INTO remarks (id, remarks) SELECT id, ? FROM testing WHERE id = ?", array($remarks1, $loginID));

if (sqlsrv_execute($stmt)) {
    echo "Record inserted successfully.";
} else {
    $errors = sqlsrv_errors();
    echo "Error inserting record: " . $errors[0]['message'];
}

注意事项

  • 两种方式都能避免生成两条独立的空字段记录,实现需求。
  • 方式二更严谨,会先校验用户ID的合法性,推荐使用。
  • sqlsrv_errors()返回的是数组,直接输出会显示Array,需要提取具体错误信息。

内容的提问来源于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.06 14:20:40