[請益] PDO 無法輸入英文或中文到SQL..

作者: yongb (火系見習魔法師 )   2015-11-04 01:26:28
各位前輩好~
剛剛嘗試用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
請問各位前輩問題究竟出在哪裡......
作者: iceblue7x (滿城盡帶路人甲)   2015-11-04 01:33:00
字串要引號
作者: shadowjohn (轉角遇到愛)   2015-11-04 01:45:00
這樣寫很不好的~再仔細找一下preparedstatementhttp://php.net/manual/en/pdo.prepare.php
作者: xdraculax (首席怪叔叔)   2015-11-04 07:50:00
開發環境最好把錯誤訊息全開,把sql貼到phpmyadmin之類資料庫管理工具執行也會秀錯誤訊息
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-11-04 10:01:00
用到pdo就可以好好用prepare了 土製SQL已經是過去的事

Links booklink

Contact Us: admin [ a t ] ucptt.com