先輩に指導してもらいましょう!
図に示すように、テーブルには 2 つのデータがあります。1 つ目は phpMyAdmin に挿入され、2 つ目は php ページから挿入されます
org_name varchar 型 open_time timestamp 型
php コードは次のとおりです。 :
include_once(" pay/CommonUtil.php");
include_once dirname(__FILE__).'/db/DbOperation.php';
$db = new DbOperation('z_org'); array(
"org_id" => 2 ,
"org_name" => "北京",
"open_time" => time()
);
$db->addObject($org); = $db->getAll() ;
var_dump($rs);
?>
問題:
1. php から挿入されたデータが文字化けしており、時刻が 0000-00-00 00:00 です。 :00
2. テーブル全体の最初の漢字データをクエリします。コードが文字化けします。2 番目は正常です。 array(2) { [0]=> array(3) { ["org_id"]=> (1) "1" ["組織名"]=> 文字列(3 ) "???" ["open_time"]=> 文字列(19) "2014-08-23 18:35:18" } [1 ]=> 配列(3) { ["組織ID"]=> 文字列(1) "2" ["組織名"]=> 文字列(19) ) "0000-00-00 00:00:00" } }
ディスカッションへの返信(解決策)
プログラムのエンコーディングは何ですか? phpmyadminと同じエンコーディングに変更してくださいそれを追加した後、エラーメッセージ「致命的エラー:キャッチされない例外「DB_Exception」とメッセージ「更新」が表示されました失敗しました: 不明な文字セット: 'utf''
は
('set names utf8')
ではありません
さて、utf8 を使用してみましたが、問題は解決しました
これで、残りのタイムスタンプが問題: time() 関数が機能しません。date("Y-m-d h:i:s") を試しました。問題は次のとおりです。
array(3) { ["org_id"]=> ) "1" ["組織名"]=> 文字列(9) "上海市" ["open_time"]=> 文字列(19) "2014-08-23 18:35:18" }
array(3) { ["org_id"]=> string(1) "3" ["org_name"]=> string(9) "重慶市" ["open_time"]=> string(19) "0000-00-00 00:00:00" }
array(3 ) { ["org_id"]=> string(1) "4" ["org_name" ]=> string(9) "天津市" ["open_time"]=> string(19) "2014-08-23 12:00:31" }
array(3) { ["org_id"]=> ; 文字列(1) "5" ["組織名"]=> 文字列(9) "河北省" ["open_time"] => 文字列(19) "2014-08-23 12:02:34" }通常より8時間遅いのですが、タイムゾーンの問題なのかわかりませんが、どう設定すればよいのでしょうか?
$org = array(
"org_id" => 2,
"org_name" => "Beijing",
"open_time" => 'now()'
);データベースの関数は OK です
ツリー ゾーンが適切に設定されていないため、日付の時刻が間違っています
date_default_timezone_set('PRC'); を追加しました
書き込み時刻は ["open_time"]= > 文字列です(19) "2014-08-23 08:11:27"、24 時間時計ではないようです
"open_time" => 'now()' を試してみたところ、["open_time"] が返されました。 => string(19) "0000-00-00 00:00:00"、すべての書き込みパラメータがスラッシュでエスケープされています、これが問題かどうかはわかりません
PHP には now() 関数はありません
now() は date("Y-m-d H:i:s" ) と同等です