iT邦幫忙

0

在PHP使用INSERT字串新增進資料庫

想請問char INSERT格式必須是'"字元"'
若想放入包含字元的字串'"$字串"'就會變成直接傳送 $字串 的字進資料庫
而不是字串裡面包含的內容

$new3=isset($_POST["S3"])?$_POST["S3"]:"0";//中文
$sql=sprintf("INSERT INTO 資料表(欄位1,欄位2,欄位3,欄位4) VALUES (%s,%s,%s,%s)",
(int)$new1,(int)$new2,date("'2020-01-01'"),(String)'"你好"');
//欄位4能新增中文字元
//但若欄位4改放入字串
$sql=sprintf("INSERT INTO 資料表(欄位1,欄位2,欄位3,欄位4) VALUES (%s,%s,%s,%s)",
(int)$new1,(int)$state,date("'$new2'"),(String)'"$new3"');
//變成只會直接新增$new3的字,而不是字串$new3......

//而改成
String("'$new3'"),
String('$new3'),
String("$new3"),
(String)"$new3",
(String)'$new3',
(String)"'$new3'" 等
//都是格式不正確........

想請問這裡PHP該如何設定能新增中文字元的字串格式呢?

看更多先前的討論...收起先前的討論...
我只想知道是哪本書教你的。可以的話拿去燒了。
豬豬人 iT邦新手 5 級 ‧ 2020-04-29 08:46:16 檢舉
是要放入變數INSERT嗎? '{$test}'
通靈亡 iT邦研究生 5 級 ‧ 2020-04-29 15:51:53 檢舉
路過聞到Injection的味道,真香!

參考一下Prepared Statements的寫法吧...
https://www.w3schools.com/php/php_mysql_prepared_statements.asp
kyoe iT邦新手 5 級 ‧ 2020-05-04 12:46:20 檢舉
建議還是用 PDO..

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-04-29 10:57:28
最佳解答

$new3 = "中文";
如果你要存的是中文
就用 "$new3" 或 $new3
如困你要存的是$new3
就用 '$new3'

不管何者
都不用什麼(String)(casting?)

請參考
PHP 單引號/雙引號字串的差異

張俊毅 iT邦新手 5 級 ‧ 2020-04-29 14:26:50 檢舉

的確不用(String),改成 "'$new3'" 後就成功了,一直多餘的加String去測試.....不好意思

問題解決就好

我要發表回答

立即登入回答