慕雪6442864
您需要考虑以下事项:您需要使用参数化语句来防止可能的 SQL 注入问题。正如文档中提到的,该sqlsrv_query()函数非常适合一次性查询,并且应该是执行查询的默认选择,除非有特殊情况。此函数提供了一种简化的方法,可以使用最少的代码执行查询。sqlsrv_query 函数执行语句准备和语句执行,并且可用于执行参数化查询。默认情况下smalldatetime,datetime、date、 、time、datetime2和datetimeoffset类型将作为 PHP DateTime 对象返回,但可以通过'ReturnDatesAsStrings'在连接字符串或语句级别设置选项来更改此行为。如果您确定日期/时间值作为 PHP DateTime 对象返回,您有两个选择:使用明确的格式将日期时间值作为文本传递(例如2020-07-22T12:00:00.000)使用调用参数的扩展语法将日期时间值作为 PHP DateTime 对象传递sqlsrv_query()。示例(日期时间值作为文本传递):<?php// SELECT statement$sql3 = "SELECT * FROM USERS";$stmt3 = sqlsrv_query($conn, $sql3 , $params, $options);if ($stmt3 === false) { echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true); exit;} // INSERT statementswhile ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) { $sql2 = " INSERT INTO USER (USER_ID, USER_NOM, USER_DATE) VALUES (?, ?, ?) "; $params = array( $row['USER_ID'], $row['USER_NOM'], $row['USER_DATE']->format('Y-m-d\TH:i:s.v')); ); $stmt2 = sqlsrv_query($conn, $sql2 , $params);}?>示例(日期时间值作为 PHP DateTime 对象传递):<?php// SELECT statement$sql3 = "SELECT * FROM USERS";$stmt3 = sqlsrv_query($conn, $sql3 , $params, $options);if ($stmt3 === false) { echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true); exit;} // INSERT statementswhile ($row = sqlsrv_fetch_array($stmt3, SQLSRV_FETCH_ASSOC)) { $sql2 = " INSERT INTO USER (USER_ID, USER_NOM, USER_DATE) VALUES (?, ?, ?) "; $params = array( array($row['USER_ID'], SQLSRV_PARAM_IN), array($row['USER_NOM'], SQLSRV_PARAM_IN), array($row['USER_DATE'], SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_DATETIME, SQLSRV_SQLTYPE_DATETIME) ); $stmt2 = sqlsrv_query($conn, $sql2 , $params);}?>