PHP が配列をデータベースに保存するプログラム コード_PHP チュートリアル

WBOY
リリース: 2016-07-13 16:56:48
オリジナル
851 人が閲覧しました

キャッシュ ファイルを作成するとき、php コードまたは配列を文字列に変換してデータベースに保存する必要があることがよくあります。配列をデータベースに保存する 2 つの方法を紹介します。

方法 1:

serialize を使用して書き込み、unserialize を使用して出力

serialize() は、オブジェクト、配列などの PHP の変数の値を文字列にシリアル化し、それらをデータベース、セッション、Cookie などの他の場所に保存できます。操作によって、これらの値の型と構造が失われることはありません。このようにして、これらの変数のデータは、PHP ページ間、さらには異なる PHP プログラム間で受け渡すことができます。
そして、unserialize() はシリアル化された文字列を PHP 値に変換します。返されるのは変換された値であり、整数、浮動小数点数、文字列、配列、オブジェクトのいずれかになります。渡された文字列を逆シリアル化できない場合は、FALSE が返されます

コードは次のとおりです コードをコピー

クラスデータベース{
プライベート $host;
プライベート $user;
プライベート $pwd;
プライベート $dbname;
プライベート $Mysqli;
function __construct($host, $user, $pwd, $dbname) {
$this->host = $host;
$this->user = $user;
$this->pwd = $pwd;
$this->dbname = $dbname;
$this->db();
}
関数 db() {
$this->mysqli = new mysqli ( $this->host, $this->user, $this->pwd, $this->dbname );
}
関数 select() {
$this->mysqli->query("SET CHARSET GBK");
$sql = "hdw_channel から id,cname を選択";
$result = $this->mysqli
->クエリ ( $sql );
$rows = 配列();
while ( $row = $result->fetch_assoc () ) {
$rows [] = $row;
}
エコー「

」;
print_r ( $rows );
}
function __wakeup(){ //逆シリアル化、
$this->db();
}
}
$chanel = 新しい db("localhost",'root','','hdcms');
//$chanel->select();
session_start();
$_SESSION['channel_obj'] = Serialize($chanel); // オブジェクトをシリアル化し、オブジェクトのプロパティを保存するため、 __wakeup() を使用する必要があります


クラスレン{
プライベート $name;
プライベート $age;
関数 __construct($name,$age){
$this->name =$name;
$this->年齢 = $年齢;
}
関数 show(){
echo "名前: {$this->name} 年齢: {$this->age}";
}
関数 __sleep(){
Return array_keys(get_object_vars($this)); //または配列内のキー名を取得し、いくつかの変数をシリアル化します
}
}
$zao = 新しい人("趙劉",44);
echoserialize($zao); //シリアル化 (シリアル化する変数を指定)

====================================

session_start();
「59.php」を含める;
$channel_obj=unserialize($_SESSION['channel_obj']) //クラスオブジェクトを逆シリアル化します
$channel_obj->select(); //__wakeup メソッドでのみ動作します

方法 2:

json_encode を使用して書き込み、json_decode を使用して出力します

json_encode の前に、urlencode() を使用してすべての配列のすべての内容を処理し、次に json_encode() を使用してそれらを JSON 文字列に変換し、最後に urldecode() を使用してエンコードされた中国語を元に戻します。

コードは次のとおりです コードをコピー

/*************************************************** * **********
*
* 特定の関数を使用して配列内のすべての要素を処理します
* @param string &$array 処理対象の文字列
* @param string $function 実行する関数
* @return boolean $apply_to_keys_only キーにも適用されるかどうか
* @アクセス公開
*
************************************************* * ***********/
function arrayRecursive(&$array, $function, $apply_to_keys_only = false)
{
静的 $recursive_counter = 0;
If (++$recursive_counter > 1000) {
die('潜在的な深い再帰攻撃');
}
foreach ($array as $key => $value) {
If (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_only);
} else {
$array[$key] = $function($value);
}

If ($apply_to_keys_only && is_string($key)) {
$new_key = $function($key);
If ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}

/*************************************************** * **********
*
* 配列を JSON 文字列に変換します (中国語と互換性があります)
* @param array $array 変換する配列
* @return string 変換されたjson文字列
* @アクセス公開
*
************************************************* * ***********/
関数 JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
urldecode($json)を返す;
}

$配列 = 配列
(
'名前'=>'シア',
「年齢」=>20
);


エコー JSON($array);
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631572.html技術記事ファイルをキャッシュする場合、多くの場合、PHP コードまたは配列を文字列に変換してデータベースに保存する必要があります。配列をデータベースに保存する 2 つの方法を紹介します。 方法 1: を使用します...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!