各位大大好:
以下是我建立1個將資料輸入到sql的語法,但有幾個問題出現,需請教一下
1。輸入中文字會出現亂碼
2。如用以下語法進去,則輸入的中文字不會出現(utf8及big5 都一樣)。
mysql_query("SET NAMES 'utf8'",$link);
mysql_query("SET CHARACTER_SET_database= utf8",$link);
mysql_query("SET CHARACTER_SET_CLIENT= utf8",$link);
mysql_query("SET CHARACTER_SET_RESULTS= utf8",$link);
3。用此方法通常新增到第三筆就再新增也沒有看到有資料上去。
4。可否有1個標準的源始碼給我當參考 謝謝
<p>以下為輸入的資訊請確認</p>
<?php
echo "出貨日期 : " .$_POST['textfield1'] ." <br> ";
echo "經銷商 : " .$_POST['textfield2'] ." <br> ";
echo "客戶名稱 :" .$_POST['textfield3'] ." <br> ";
echo "送貨地址 : ".$_POST['textfield4'] ." <br> ";
echo "客戶連絡電話 :" .$_POST['textfield5'] ." <br> ";
echo "客戶連絡手機 : ".$_POST['textfield6'] ." <br> ";
echo "客戶連絡人 : ".$_POST['textfield7'] ." <br> ";
echo "機器型號 : ".$_POST['textfield8'] ." <br> ";
echo "軟體版本 : ".$_POST['textfield9'] ." <br> ";
echo "機器序號 : ".$_POST['textfield10'] ." <br> ";
echo "dom號 : ".$_POST['textfield11'] ." <br> ";
echo "raid序號 : ".$_POST['textfield12'] ." <br> ";
echo "硬碟 : ".$_POST['textfield13'] ." <br> ";
echo "raid卡 :" .$_POST['textfield14'] ." <br> ";
echo "主機板 : ".$_POST['textfield15'] ." <br> ";
echo "ram : ".$_POST['textfield16'] ." <br> ";
echo "cpu : ".$_POST['textfield17'] ." <br> ";
echo "保固 : ".$_POST['textfield18'] ." <br> ";
echo "組裝人 : ".$_POST['textfield19'] ." <br> ";
echo "優惠券 : ".$_POST['textfield20'] ." <br> ";
?>
http://www.php.net/manual/en/function.mysql-query.php
PHP 官方網站有很多範例可以抄
大大以下為我的資料
MySQL 資料庫版本 MySQL 5.0.24a
Engine 編碼 這怎麼看?
Database 編碼 utf8_general_ci
Tables 編碼 utf8_general_ci
我用appsvr 2.5.7 裝在windows平台上
AppServ 2.5.7
內建
Apache 2.2.3
PHP 5.1.6
MySQL 5.0.24a
phpMyAdmin-2.9.0.2
請問那如果你的話,都如何寫呢,或我要改什麼即可。
資料庫結構
CREATE DATABASE testdb;
CREATE TABLE account
(
username
varchar(255) NOT NULL,
userpass
varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=big5;
useradd.php 內容
<form action="useradd_ok.php" method="POST">
<INPUT NAME="username" /><br />
<INPUT NAME="userpass" /><br />
<input type="submit" value="Send" /><br />
</form>
useradd_ok.php 內容
<?
$mysql_host="localhost";
$mysql_user="root";
$mysql_password="password";
$mysql_database="testdb";
// ------------------------------------------------------------
if (!$link = mysql_connect($mysql_host, $mysql_user, $mysql_password)) {
echo 'Could not connect to mysql';
exit;
}
mysql_query("SET NAMES big5", $link);
mysql_query("SET CHARACTER_SET_CLIENT=big5", $link);
mysql_query("SET CHARACTER_SET_RESULTS=big5", $link);
$sql = "INSERT INTO account (username
,userpass
)
VALUES ('" . $_POST['username'] . "','" . $_POST['userpass'] . "')";
$result =mysql_db_query($mysql_database, $sql);
if (!$result) {
echo "DB Error, could not query the database\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
$result_record_counts = mysql_num_rows($result);
echo "Record Count : " . $result_record_counts . "<BR>\n";
printf("Affected Rows: %d<BR>\n", mysql_affected_rows());
echo "------- Table account -----------<br>";
$sql = "SELECT * FROM account ";
$result =mysql_db_query($mysql_database, $sql);
if (!$result) {
echo "DB Error, could not query the database\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
while ($row=mysql_fetch_object($result)) {
echo $row->username . " , " . $row->userpass . "<BR>\n";
}
mysql_free_result($result);
?>
PS: 以上都是剛剛測試過可用的
謝謝你,你的用big5 ok,我將以下資訊改為utf8就出現亂碼了
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
mysql_query("SET NAMES utf8", $link);
mysql_query("SET CHARACTER_SET_CLIENT=utf8", $link);
mysql_query("SET CHARACTER_SET_RESULTS=utf8", $link);
username varchar(255) utf8_general_ci 否
userpass varchar(255) utf8_general_ci 否
資訊庫校對我也選utf8
SET NAMES 'utf8'
上面這一句, 就代表了以下三行
SET CHARACTER_SET_DATABASE='utf8'
SET CHARACTER_SET_CLIENT='utf8'
SET CHARACTER_SET_RESULTS='utf8'
亂碼問題, 其實網站上諸多討論, 去 google 一下以上三行的意義, 會對你有幫助的.
簡單來說, 你 php 檔如果是 big5, 但 DB 如果是 utf8, 就應該
SET CHARACTER_SET_DATABASE='utf8'
SET CHARACTER_SET_CLIENT='big5' // Client 端是 big5 的 php script
SET CHARACTER_SET_RESULTS='big5' // 告訴 mysql 傳回的結果用 big5
另外為什麼第三筆後就沒資料了, 請確認你是否有設定 mysql 的 connection 是 persistent; 若有安裝 mysqli, 也可以以 mysqli 的方式連線確保 persistent.
更簡單的方法是每次 query 前重新 connect mysql 一次, 但很耗資源跟速度.