标签搜索

MYsql绑定参数案例

wehg489
2025-03-31 / 0 评论 / 12 阅读 / 正在检测是否收录...
  1. ‌SQL 语句的结构‌
    sql
    Copy Code
    INSERT INTO complete (part_number, quantity, time)
    VALUES (?, ?, ?)
    ON DUPLICATE KEY UPDATE estimated_delivery_date = ?, quantity = ?, zt = ?
    ‌INSERT INTO complete (part_number, quantity, time)‌
    指定要插入数据的表 complete 和对应的列:part_number(零件编号)、quantity(数量)、time(时间)。

‌VALUES (?, ?, ?)‌
使用占位符 ? 表示需要动态插入的值。这些值会在后续通过 bind_param 方法绑定。

‌ON DUPLICATE KEY UPDATE‌
如果插入的数据与表中已有的某条记录的主键或唯一键冲突(即重复),则执行更新操作,而不是插入新记录。

‌estimated_delivery_date = ?, quantity = ?, zt = ?‌
如果发生冲突,更新 estimated_delivery_date(预计交付日期)、quantity(数量)和 zt(某个字段,可能是状态或其他信息)的值。这些值也通过占位符 ? 表示。

  1. ‌$stmt = $mysqli->prepare(...)‌
    使用 $mysqli->prepare 方法准备 SQL 语句,返回一个 mysqli_stmt 对象(即预处理语句对象)。
    预处理语句可以提高 SQL 执行效率,并防止 SQL 注入攻击。
  2. ‌bind_param 方法‌
    php
    Copy Code
    $stmt->bind_param("ssissssi", $partNumber, $quantity, $time);
    将动态值绑定到 SQL 语句中的占位符 ?。
    ‌第一个参数 "ssissssi"‌
    指定每个占位符的数据类型:
    s:字符串
    i:整数
    根据 SQL 语句,这里可能需要调整数据类型。
    ‌后续参数‌
    按顺序传入要绑定的值:$partNumber、$quantity、$time 等。
  3. ‌ON DUPLICATE KEY UPDATE 的逻辑‌
    如果 part_number 是表的主键或唯一键,且插入的 part_number 已存在,则执行更新操作。
    更新的字段是 estimated_delivery_date、quantity 和 zt,其值通过占位符 ? 绑定。
  4. ‌代码中的问题‌
    ‌bind_param 的参数数量不匹配‌
    SQL 语句中有 6 个占位符(?, ?, ?, ?, ?, ?),但 bind_param 只绑定了 3 个值($partNumber, $quantity, $time)。需要补充 estimated_delivery_date、quantity 和 zt 的值。

‌数据类型可能不匹配‌
确保 bind_param 的第一个参数(如 "ssissssi")与传入值的数据类型一致。

‌缺少更新字段的值‌
在 ON DUPLICATE KEY UPDATE 中,estimated_delivery_date、quantity 和 zt 的值需要在循环中动态绑定。

0

评论 (0)

取消
歌曲封面
0:00