亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 sqlsrv_query 插入日期的日期格式是什么?

使用 sqlsrv_query 插入日期的日期格式是什么?

PHP
慕妹3146593 2023-08-19 16:33:19
我通過這個 sql 查詢獲取所有行:$sql = "SELECT * FROM USERS";$stmt3 = sqlsrv_query( $conn, $sql3 , $params, $options );但是當我想插入時:$sql2 =    "INSERT INTO USER (USER_ID, USER_NOM, USER_DATE)    VALUES (".$row['USER_ID'].", '".$row['USER_NOM']."','".$row['USER_DATE']->format('Y-m-d h:i:s.v')."')";我收到此錯誤:將 varchar 數據類型轉換為 datetime 會產生超出范圍的值。這是我的$sql2:INSERT INTO USER (USER_ID, USER_NOM, USER_DATE) VALUES (1,DANI,'2020-07-22 12:00:00.000')
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

您需要考慮以下事項:

  • 您需要使用參數化語句來防止可能的 SQL 注入問題。正如文檔中提到的,該sqlsrv_query()函數非常適合一次性查詢,并且應該是執行查詢的默認選擇,除非有特殊情況。此函數提供了一種簡化的方法,可以使用最少的代碼執行查詢。sqlsrv_query 函數執行語句準備和語句執行,并且可用于執行參數化查詢。

  • 默認情況下smalldatetime,datetimedate、 、time、datetime2datetimeoffset類型將作為 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 statements

while ($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 statements

while ($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);


}

?>


查看完整回答
反對 回復 2023-08-19
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

Datetime要插入到 type 中的值,Datetime應采用 'YYYY-MM-DD HH:MM:SS' 格式。

支持的范圍是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。

查看完整回答
反對 回復 2023-08-19
  • 2 回答
  • 0 關注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號