第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Laravel 綁定參數(shù)使用 insert() 和 Convert() 內(nèi)部

Laravel 綁定參數(shù)使用 insert() 和 Convert() 內(nèi)部

PHP
蝴蝶不菲 2023-08-06 14:41:41
我很難綁定我的 SQL 查詢,而且我只剩下一些腦細(xì)胞了?;旧希@段代碼可以工作,但容易受到 SQL 注入:return DB::connection('sqlsrv_rfo_user')    ->table('dbo.tbl_rfaccount')    ->insert([        'Email' => $email,        'id' => DB::raw("CONVERT(binary, '$username')"),        'password' => DB::raw("CONVERT(binary, '$password')"),        'birthdate' => $birthday,        'accounttype' => 0,        'BCodeTU' => 1    ]);我試圖弄清楚如何綁定這些代碼行:'id' => DB::raw("CONVERT(binary, '$username')"),'password' => DB::raw("CONVERT(binary, '$password')"),我確實(shí)嘗試過這樣做:'id' => DB::raw("CONVERT(binary, ?)", [$username]),'password' => DB::raw("CONVERT(binary, ?)", [$password]),并得到這個(gè)錯(cuò)誤:SQLSTATE[07002]: [Microsoft][ODBC Driver 13 for SQL Server]COUNT field incorrect or syntax error (SQL: insert into [dbo].[tbl_rfaccount] ([Email], [id], [password], [birthdate], [accounttype], [BCodeTU]) values (user@example.com, CONVERT(binary, 2011-11-11 00:00:00), CONVERT(binary, 0), 1, ?, ?))和這個(gè):'id' => DB::raw("CONVERT(binary, :username)", ['username' => $username]),'password' => DB::raw("CONVERT(binary, :password)", ['password' => $password]),并得到這個(gè)錯(cuò)誤:SQLSTATE[IMSSP]: An error occurred substituting the named parameters. (SQL: insert into [dbo].[tbl_rfaccount] ([Email], [id], [password], [birthdate], [accounttype], [BCodeTU]) values (user@example.com, CONVERT(binary, :username), CONVERT(binary, :password), 2011-11-11 00:00:00, 0, 1))我收到此錯(cuò)誤:SQLSTATE[22001]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]String or binary data would be truncated. (SQL: INSERT INTO [dbo].[tbl_rfaccount] ([id] ,[password] ,[accounttype] ,[birthdate] ,[BCodeTU] ,[Email]) VALUES ((CONVERT(binary, user01)), (CONVERT(binary, password01)), 0, 2011-11-11 00:00:00, 1, user@example.com)自從我開始學(xué)習(xí) Laravel 以來(lái),我就一直在使用 Eloquent,但我有一個(gè)項(xiàng)目迫使我采用這些編碼方式,所以我別無(wú)選擇。
查看完整描述

2 回答

?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

根據(jù)您最后的錯(cuò)誤消息,當(dāng)您嘗試完整的原始查詢時(shí):

SQLSTATE[22001]:[Microsoft][SQL Server 的 ODBC 驅(qū)動(dòng)程序 13][SQL Server]字符串或二進(jìn)制數(shù)據(jù)將被截?cái)?/strong>。(SQL: INSERT INTO [dbo].[tbl_rfaccount] ([id] ,[password] ,[accounttype] ,[birthdate] ,[BCodeTU] ,[Email]) VALUES ((CONVERT(binary, user01)), (CONVERT (二進(jìn)制,密碼01)),0,2011-11-11 00:00:00,1,user@example.com)

您需要指定函數(shù)中字段的長(zhǎng)度CONVERT

不是CONVERT(binary, user01),但是CONVERT(binary(16), user01)。指定與目標(biāo)表中定義的列相同的長(zhǎng)度。

如果不指定長(zhǎng)度,則在某些情況下假定為 1,在某些情況下假定為 30。

CONVERT如果未指定,該函數(shù)假定長(zhǎng)度為 30。

--?CONVERT?Syntax:??CONVERT?(?data_type?[?(?length?)?]?,?expression?[?,?style?]?)

...

長(zhǎng)度

對(duì)于允許用戶指定長(zhǎng)度的數(shù)據(jù)類型,指定目標(biāo)數(shù)據(jù)類型的長(zhǎng)度的可選整數(shù)。默認(rèn)值為 30。

這是一個(gè)簡(jiǎn)單的例子,演示了正在發(fā)生的事情:

SELECT
????CONVERT(binary(16),?'1234567890123456')?AS?Bin16
????,CONVERT(binary,?'1234567890123456')?as?BinNoLength
;

結(jié)果:

+------------------------------------+----------------------------------------------------------------+

| Bin16? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | BinNoLength? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |

+------------------------------------+----------------------------------------------------------------+

| 0x31323334353637383930313233343536 | 0x313233343536373839303132333435360000000000000000000000000000 |

+------------------------------------+----------------------------------------------------------------+

因此,當(dāng)您未在 中指定長(zhǎng)度時(shí)CONVERT,您將得到結(jié)果binary(30)。


當(dāng)您嘗試將此 long 值插入到表中的列中時(shí),您的列不夠長(zhǎng),無(wú)法存儲(chǔ)它,因此 long 值被截?cái)?,并且您?huì)看到此錯(cuò)誤消息。


查看完整回答
反對(duì) 回復(fù) 2023-08-06
?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

你能試試這個(gè)嗎


return DB::connection('sqlsrv_rfo_user')

    ->table('dbo.tbl_rfaccount')

    ->insert([

        'Email' => $email,

        'id' => DB::raw(`CONVERT(binary,$username)`),

        'password' => DB::raw(`CONVERT(binary,$password)`),

        'birthdate' => $birthday,

        'accounttype' => 0,

        'BCodeTU' => 1

    ]);


查看完整回答
反對(duì) 回復(fù) 2023-08-06
  • 2 回答
  • 0 關(guān)注
  • 195 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)