看板 PHP 關於我們 聯絡資訊
各位前輩好~ 剛剛嘗試用PDO 查詢新增修改刪除都很順利的過來了 (沒有用hmtl,可以寫入英文中文) 現在嘗試由html寫入資料到sql 可是發現...... 只要有中文跟英文就無法寫入.... 打數字才能寫入.... html有加 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> php檔 <?php header("Content-Type:text/html; charset=utf-8"); $sno=$_POST['a']; $name=$_POST['b']; $dsn = ""; $dbh=new PDO(); $dbh->exec("set character set utf-8"); $sql="insert into test(sno,name)values($sno,$name)"; /* ^這裡要加' ' e.g. '$sno' */ $count=$dbh->exec($sql); echo $sql; if(!$sql) echo "no"; else echo "ok"; $dbh=null; ?> 我有用echo $sql看,顯示如下(假設html分別輸入1和abc後) INSERT INTO test(sno,name)VALUES(1,abc)ok 這樣顯示程式應該是沒問題吧? 但只要有中文或英文就無法寫入囧 phpMyadmin編碼也預設了utf8_general_ci sno、name型態都用varchar了空間各20 瀏覽器編碼也用了utf-8 請問各位前輩問題究竟出在哪裡...... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.45.183 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1446571592.A.5B9.html
iceblue7x: 字串要引號 11/04 01:33
......對齁!!!(震驚 我笑了xDDDDD 謝謝大大我真的是Orz
shadowjohn: 這樣寫很不好的~再仔細找一下preparedstatement 11/04 01:45
shadowjohn: http://php.net/manual/en/pdo.prepare.php 11/04 01:46
確實呢,我看網路上大多都是那種寫法 像我這樣的完全沒有 明天就來改xDD 為了一個引號從7點弄到現在囧 謝謝大大嘿 不過Prepared Statements中翻要怎念阿? 預處理?
xdraculax: 開發環境最好把錯誤訊息全開,把sql貼到phpmyadmin之 11/04 07:50
xdraculax: 類資料庫管理工具執行也會秀錯誤訊息 11/04 07:50
好的感謝大大會從這方面著手 這次為了一個引號弄那麼久真的是慘痛的教訓.... 全開是指 getMessage() getCode() getFile() getLine() getTrace() backtrace() getTraceAsString() 全放嗎? 因為我是Vim打好就丟伺服器然後開網頁來看了......
MOONRAKER: 用到pdo就可以好好用prepare了 土製SQL已經是過去的事 11/04 10:01
剛剛改完覺得蠻潮的ww ※ 編輯: yongb (36.233.4.167), 11/04/2015 14:17:18