国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
PHP的Yii框架中使用數(shù)據(jù)庫的配置和SQL操作實例教程,yii實例教程
您可能感興趣的文章:
Heim Backend-Entwicklung PHP-Tutorial PHP的Yii框架中使用數(shù)據(jù)庫的配置和SQL操作實例教程,yii實例教程_PHP教程

PHP的Yii框架中使用數(shù)據(jù)庫的配置和SQL操作實例教程,yii實例教程_PHP教程

Jul 12, 2016 am 08:56 AM
mongodb php yii

PHP的Yii框架中使用數(shù)據(jù)庫的配置和SQL操作實例教程,yii實例教程

數(shù)據(jù)庫訪問 (DAO)
Yii 包含了一個建立在 PHP PDO 之上的數(shù)據(jù)訪問層 (DAO). DAO為不同的數(shù)據(jù)庫提供了一套統(tǒng)一的API. 其中ActiveRecord 提供了數(shù)據(jù)庫與模型(MVC 中的 M,Model) 的交互,QueryBuilder 用于創(chuàng)建動態(tài)的查詢語句. DAO提供了簡單高效的SQL查詢,可以用在與數(shù)據(jù)庫交互的各個地方.

Yii 默認支持以下數(shù)據(jù)庫 (DBMS):

  • MySQL
  • MariaDB
  • SQLite
  • PostgreSQL
  • CUBRID: 版本 >= 9.3 . (由于PHP PDO 擴展的一個bug 引用值會無效,所以你需要在 CUBRID的客戶端和服務端都使用 9.3 )
  • Oracle
  • MSSQL: 版本>=2005.

配置

開始使用數(shù)據(jù)庫首先需要配置數(shù)據(jù)庫連接組件,通過添加 db 組件到應用配置實現(xiàn)("基礎的" Web 應用是 config/web.php),DSN( Data Source Name )是數(shù)據(jù)源名稱,用于指定數(shù)據(jù)庫信息.如下所示:

return [
  // ...
  'components' => [
    // ...
    'db' => [
      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:host=localhost;dbname=mydatabase', // MySQL, MariaDB
      //'dsn' => 'sqlite:/path/to/database/file', // SQLite
      //'dsn' => 'pgsql:host=localhost;port=5432;dbname=mydatabase', // PostgreSQL
      //'dsn' => 'cubrid:dbname=demodb;host=localhost;port=33000', // CUBRID
      //'dsn' => 'sqlsrv:Server=localhost;Database=mydatabase', // MS SQL Server, sqlsrv driver
      //'dsn' => 'dblib:host=localhost;dbname=mydatabase', // MS SQL Server, dblib driver
      //'dsn' => 'mssql:host=localhost;dbname=mydatabase', // MS SQL Server, mssql driver
      //'dsn' => 'oci:dbname=//localhost:1521/mydatabase', // Oracle
      'username' => 'root', //數(shù)據(jù)庫用戶名
      'password' => '', //數(shù)據(jù)庫密碼
      'charset' => 'utf8',
    ],
  ],
  // ...
];

請參考PHP manual獲取更多有關 DSN 格式信息。 配置連接組件后可以使用以下語法訪問:

$connection = \Yii::$app->db;

請參考yii\db\Connection獲取可配置的屬性列表。 如果你想通過ODBC連接數(shù)據(jù)庫,則需要配置yii\db\Connection::driverName 屬性,例如:

'db' => [
  'class' => 'yii\db\Connection',
  'driverName' => 'mysql',
  'dsn' => 'odbc:Driver={MySQL};Server=localhost;Database=test',
  'username' => 'root',
  'password' => '',
],

注意:如果需要同時使用多個數(shù)據(jù)庫可以定義 多個 連接組件:

return [
  // ...
  'components' => [
    // ...
    'db' => [
      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:host=localhost;dbname=mydatabase', 
      'username' => 'root',
      'password' => '',
      'charset' => 'utf8',
    ],
    'secondDb' => [
      'class' => 'yii\db\Connection',
      'dsn' => 'sqlite:/path/to/database/file', 
    ],
  ],
  // ...
];

在代碼中通過以下方式使用:

$primaryConnection = \Yii::$app->db;
$secondaryConnection = \Yii::$app->secondDb;

如果不想定義數(shù)據(jù)庫連接為全局應用組件,可以在代碼中直接初始化使用:

$connection = new \yii\db\Connection([
  'dsn' => $dsn,
   'username' => $username,
   'password' => $password,
]);
$connection->open();

小提示:如果在創(chuàng)建了連接后需要執(zhí)行額外的 SQL 查詢,可以添加以下代碼到應用配置文件:

return [
  // ...
  'components' => [
    // ...
    'db' => [
      'class' => 'yii\db\Connection',
      // ...
      'on afterOpen' => function($event) {
        $event->sender->createCommand("SET time_zone = 'UTC'")->execute();
      }
    ],
  ],
  // ...
];

如果執(zhí)行 SQL 不返回任何數(shù)據(jù)可使用命令中的 execute 方法:

$command = $connection->createCommand('UPDATE post SET status=1 WHERE id=1');
$command->execute();

你可以使用insert,update,delete 方法,這些方法會根據(jù)參數(shù)生成合適的SQL并執(zhí)行.

// INSERT
$connection->createCommand()->insert('user', [
  'name' => 'Sam',
  'age' => 30,
])->execute();

// INSERT 一次插入多行
$connection->createCommand()->batchInsert('user', ['name', 'age'], [
  ['Tom', 30],
  ['Jane', 20],
  ['Linda', 25],
])->execute();

// UPDATE
$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();

// DELETE
$connection->createCommand()->delete('user', 'status = 0')->execute();

引用的表名和列名

大多數(shù)時間都使用以下語法來安全地引用表名和列名:

$sql = "SELECT COUNT($column) FROM {{table}}";
$rowCount = $connection->createCommand($sql)->queryScalar();

以上代碼$column 會轉(zhuǎn)變?yōu)橐们‘數(shù)牧忻?,而{{table}} 就轉(zhuǎn)變?yōu)橐们‘數(shù)谋砻?表名有個特殊的變量 {{%Y}} ,如果設置了表前綴使用該變體可以自動在表名前添加前綴:

$sql = "SELECT COUNT($column) FROM {{%$table}}";
$rowCount = $connection->createCommand($sql)->queryScalar();

如果在配置文件如下設置了表前綴,以上代碼將在 tbl_table 這個表查詢結(jié)果:

return [
  // ...
  'components' => [
    // ...
    'db' => [
      // ...
      'tablePrefix' => 'tbl_',
    ],
  ],
];

手工引用表名和列名的另一個選擇是使用yii\db\Connection::quoteTableName() 和 yii\db\Connection::quoteColumnName():

$column = $connection->quoteColumnName($column);
$table = $connection->quoteTableName($table);
$sql = "SELECT COUNT($column) FROM $table";
$rowCount = $connection->createCommand($sql)->queryScalar();

預處理語句

為安全傳遞查詢參數(shù)可以使用預處理語句,首先應當使用:placeholder占位,再將變量綁定到對應占位符:

$command = $connection->createCommand('SELECT * FROM post WHERE id=:id');
$command->bindValue(':id', $_GET['id']);
$post = $command->query();

另一種用法是準備一次預處理語句而執(zhí)行多次查詢:

$command = $connection->createCommand('DELETE FROM post WHERE id=:id');
$command->bindParam(':id', $id);

$id = 1;
$command->execute();

$id = 2;
$command->execute();

提示,在執(zhí)行前綁定變量,然后在每個執(zhí)行中改變變量的值(一般用在循環(huán)中)比較高效.
事務

當你需要順序執(zhí)行多個相關的的query時,你可以把他們封裝到一個事務中去保護數(shù)據(jù)一致性.Yii提供了一個簡單的接口來實現(xiàn)事務操作. 如下執(zhí)行 SQL 事務查詢語句:

$transaction = $connection->beginTransaction();
try {
  $connection->createCommand($sql1)->execute();
   $connection->createCommand($sql2)->execute();
  // ... 執(zhí)行其他 SQL 語句 ...
  $transaction->commit();
} catch(Exception $e) {
  $transaction->rollBack();
}

我們通過yii\db\Connection::beginTransaction()開始一個事務,通過try catch 捕獲異常.當執(zhí)行成功,通過yii\db\Transaction::commit()提交事務并結(jié)束,當發(fā)生異常失敗通過yii\db\Transaction::rollBack()進行事務回滾.

如需要也可以嵌套多個事務:

// 外部事務
$transaction1 = $connection->beginTransaction();
try {
  $connection->createCommand($sql1)->execute();

  // 內(nèi)部事務
  $transaction2 = $connection->beginTransaction();
  try {
    $connection->createCommand($sql2)->execute();
    $transaction2->commit();
  } catch (Exception $e) {
    $transaction2->rollBack();
  }

  $transaction1->commit();
} catch (Exception $e) {
  $transaction1->rollBack();
}

注意你使用的數(shù)據(jù)庫必須支持Savepoints才能正確地執(zhí)行,以上代碼在所有關系數(shù)據(jù)中都可以執(zhí)行,但是只有支持Savepoints才能保證安全性。
Yii 也支持為事務設置隔離級別isolation levels,當執(zhí)行事務時會使用數(shù)據(jù)庫默認的隔離級別,你也可以為事物指定隔離級別. Yii 提供了以下常量作為常用的隔離級別

  • \yii\db\Transaction::READ_UNCOMMITTED - 允許讀取改變了的還未提交的數(shù)據(jù),可能導致臟讀、不可重復讀和幻讀
  • \yii\db\Transaction::READ_COMMITTED - 允許并發(fā)事務提交之后讀取,可以避免臟讀,可能導致重復讀和幻讀。
  • \yii\db\Transaction::REPEATABLE_READ - 對相同字段的多次讀取結(jié)果一致,可導致幻讀。
  • \yii\db\Transaction::SERIALIZABLE - 完全服從ACID的原則,確保不發(fā)生臟讀、不可重復讀和幻讀。

你可以使用以上常量或者使用一個string字符串命令,在對應數(shù)據(jù)庫中執(zhí)行該命令用以設置隔離級別,比如對于postgres有效的命令為SERIALIZABLE READ ONLY DEFERRABLE.

注意:某些數(shù)據(jù)庫只能針對連接來設置事務隔離級別,所以你必須要為連接明確制定隔離級別.目前受影響的數(shù)據(jù)庫:MSSQL SQLite

注意:SQLite 只支持兩種事務隔離級別,所以你只能設置READ UNCOMMITTED 和 SERIALIZABLE.使用其他隔離級別會拋出異常.

注意:PostgreSQL 不允許在事務開始前設置隔離級別,所以你不能在事務開始時指定隔離級別.你可以在事務開始之后調(diào)用yii\db\Transaction::setIsolationLevel() 來設置.
關于隔離級別[isolation levels]: http://en.wikipedia.org/wiki/Isolation_(database_systems)#Isolation_levels

數(shù)據(jù)庫復制和讀寫分離

很多數(shù)據(jù)庫支持數(shù)據(jù)庫復制 http://en.wikipedia.org/wiki/Replication_(computing)#Database_replication">database replication來提高可用性和響應速度. 在數(shù)據(jù)庫復制中,數(shù)據(jù)總是從主服務器 到 從服務器. 所有的插入和更新等寫操作在主服務器執(zhí)行,而讀操作在從服務器執(zhí)行.

通過配置yii\db\Connection可以實現(xiàn)數(shù)據(jù)庫復制和讀寫分離.

[
  'class' => 'yii\db\Connection',

  // 配置主服務器
  'dsn' => 'dsn for master server',
  'username' => 'master',
  'password' => '',

  // 配置從服務器
  'slaveConfig' => [
    'username' => 'slave',
    'password' => '',
    'attributes' => [
      // use a smaller connection timeout
      PDO::ATTR_TIMEOUT => 10,
    ],
  ],

  // 配置從服務器組
  'slaves' => [
    ['dsn' => 'dsn for slave server 1'],
    ['dsn' => 'dsn for slave server 2'],
    ['dsn' => 'dsn for slave server 3'],
    ['dsn' => 'dsn for slave server 4'],
  ],
]

以上的配置實現(xiàn)了一主多從的結(jié)構(gòu),從服務器用以執(zhí)行讀查詢,主服務器執(zhí)行寫入查詢,讀寫分離的功能由后臺代碼自動完成.調(diào)用者無須關心.例如:

// 使用以上配置創(chuàng)建數(shù)據(jù)庫連接對象
$db = Yii::createObject($config);

// 通過從服務器執(zhí)行查詢操作
$rows = $db->createCommand('SELECT * FROM user LIMIT 10')->queryAll();

// 通過主服務器執(zhí)行更新操作
$db->createCommand("UPDATE user SET username='demo' WHERE id=1")->execute();

注意:通過yii\db\Command::execute() 執(zhí)行的查詢被認為是寫操作,所有使用yii\db\Command來執(zhí)行的其他查詢方法被認為是讀操作.你可以通過$db->slave得到當前正在使用能夠的從服務器.
Connection組件支持從服務器的負載均衡和故障轉(zhuǎn)移,當?shù)谝淮螆?zhí)行讀查詢時,會隨即選擇一個從服務器進行連接,如果連接失敗則又選擇另一個,如果所有從服務器都不可用,則會連接主服務器。你可以配置yii\db\Connection::serverStatusCache來記住那些不能連接的從服務器,使Yii 在一段時間[[yii\db\Connection::serverRetryInterval].內(nèi)不會重復嘗試連接那些根本不可用的從服務器.

注意:在上述配置中,每個從服務器連接超時時間被指定為10s. 如果在10s內(nèi)不能連接,則被認為該服務器已經(jīng)掛掉.你也可以自定義超時參數(shù).
你也可以配置多主多從的結(jié)構(gòu),例如:

[
  'class' => 'yii\db\Connection',

  // 配置主服務器
  'masterConfig' => [
    'username' => 'master',
    'password' => '',
    'attributes' => [
      // use a smaller connection timeout
      PDO::ATTR_TIMEOUT => 10,
    ],
  ],

  // 配置主服務器組
  'masters' => [
    ['dsn' => 'dsn for master server 1'],
    ['dsn' => 'dsn for master server 2'],
  ],

  // 配置從服務器
  'slaveConfig' => [
    'username' => 'slave',
    'password' => '',
    'attributes' => [
      // use a smaller connection timeout
      PDO::ATTR_TIMEOUT => 10,
    ],
  ],

  // 配置從服務器組
  'slaves' => [
    ['dsn' => 'dsn for slave server 1'],
    ['dsn' => 'dsn for slave server 2'],
    ['dsn' => 'dsn for slave server 3'],
    ['dsn' => 'dsn for slave server 4'],
  ],
]

上述配置制定了2個主服務器和4個從服務器.Connection組件也支持主服務器的負載均衡和故障轉(zhuǎn)移,與從服務器不同的是,如果所有主服務器都不可用,則會拋出異常.

注意:當你使用yii\db\Connection::masters來配置一個或多個主服務器時,Connection中關于數(shù)據(jù)庫連接的其他屬性(例如:dsn,username, password)都會被忽略.
事務默認使用主服務器的連接,并且在事務執(zhí)行中的所有操作都會使用主服務器的連接,例如:

// 在主服務器連接上開始事務
$transaction = $db->beginTransaction();

try {
  // 所有的查詢都在主服務器上執(zhí)行
  $rows = $db->createCommand('SELECT * FROM user LIMIT 10')->queryAll();
  $db->createCommand("UPDATE user SET username='demo' WHERE id=1")->execute();

  $transaction->commit();
} catch(\Exception $e) {
  $transaction->rollBack();
  throw $e;
}

如果你想在從服務器上執(zhí)行事務操作則必須要明確地指定,比如:

$transaction = $db->slave->beginTransaction();

有時你想強制使用主服務器來執(zhí)行讀查詢,你可以調(diào)用seMaster()方法.

$rows = $db->useMaster(function ($db) {
  return $db->createCommand('SELECT * FROM user LIMIT 10')->queryAll();
});

你也可以設置$db->enableSlaves 為false來使所有查詢都在主服務器上執(zhí)行.

  • 操作數(shù)據(jù)庫模式
  • 獲得模式信息

你可以通過 yii\db\Schema實例來獲取Schema信息:

$schema = $connection->getSchema();

該實例包括一系列方法來檢索數(shù)據(jù)庫多方面的信息:

$tables = $schema->getTableNames();

更多信息請參考yii\db\Schema

修改模式

除了基礎的 SQL 查詢,yii\db\Command還包括一系列方法來修改數(shù)據(jù)庫模式:

  • 創(chuàng)建/重命名/刪除/清空表
  • 增加/重命名/刪除/修改字段
  • 增加/刪除主鍵
  • 增加/刪除外鍵
  • 創(chuàng)建/刪除索引

使用示例:

// 創(chuàng)建表
$connection->createCommand()->createTable('post', [
  'id' => 'pk',
  'title' => 'string',
  'text' => 'text',
]);

完整參考請查看yii\db\Command.

SQL查詢示例:

// find the customers whose primary key value is 10
$customers = Customer::findAll(10);
$customer = Customer::findOne(10);

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => 10])->all();

// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findAll([10, 11, 12]);
$customers = Customer::find()->where(['IN','id',[10,11,12]])->all();

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();

// find customers whose age is 30 and whose status is 1
$customers = Customer::findAll(['age' => 30, 'status' => 1]);

// the above code is equivalent to:
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();

// use params binding
$customers = Customer::find()->where('age=:age AND status=:status')->addParams([':age'=>30,':status'=>1])->all();

// use index
$customers = Customer::find()->indexBy('id')->where(['age' => 30, 'status' => 1])->all();

// get customers count
$count = Customer::find()->where(['age' => 30, 'status' => 1])->count();

// add addition condition
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->andWhere('score > 100')->orderBy('id DESC')->offset(5)->limit(10)->all();

// find by sql
$customers = Customer::findBySql('SELECT * FROM customer WHERE age=30 AND status=1 AND score>100 ORDER BY id DESC LIMIT 5,10')->all();

修改:

// update status for customer-10
$customer = Customer::findOne(10);
$customer->status = 1;
$customer->update();

// the above code is equivalent to:
Customer::updateAll(['status' => 1], 'id = :id',[':id'=>10]);

刪除:

// delete customer-10
Customer::findOne(10)->delete();

// the above code is equivalent to:
Customer::deleteAll(['status' => 1], 'id = :id',[':id'=>10]);

--------------------------------使用子查詢------------------------------------------

$subQuery = (new Query())->select('COUNT(*)')->from('customer');

// SELECT `id`, (SELECT COUNT(*) FROM `customer`) AS `count` FROM `customer`
$query = (new Query())->select(['id', 'count' => $subQuery])->from('customer');

--------------------------------手寫SQL-------------------------------------------

// select
$customers = Yii::$app->db->createCommand('SELECT * FROM customer')->queryAll();

// update
Yii::$app->db->createCommand()->update('customer',['status'=>1],'id=10')->execute();

// delete
Yii::$app->db->createCommand()->delete('customer','id=10')->execute();

//transaction
// outer 
$transaction1 = $connection->beginTransaction();
try {
  $connection->createCommand($sql1)->execute();

  // internal
  $transaction2 = $connection->beginTransaction();
  try {
    $connection->createCommand($sql2)->execute();
    $transaction2->commit();
  } catch (Exception $e) {
    $transaction2->rollBack();
  }

  $transaction1->commit();
} catch (Exception $e) {
  $transaction1->rollBack();
}

-----------------------------主從配置--------------------------------------------

[
  'class' => 'yii\db\Connection',

  // master 
  'dsn' => 'dsn for master server',
  'username' => 'master',
  'password' => '',

  // slaves
  'slaveConfig' => [
    'username' => 'slave',
    'password' => '',
    'attributes' => [
      // use a smaller connection timeout
      PDO::ATTR_TIMEOUT => 10,
    ],
  ],

  'slaves' => [
    ['dsn' => 'dsn for slave server 1'],
    ['dsn' => 'dsn for slave server 2'],
    ['dsn' => 'dsn for slave server 3'],
    ['dsn' => 'dsn for slave server 4'],
  ],
]

您可能感興趣的文章:

  • PHP的Yii框架中移除組件所綁定的行為的方法
  • PHP的Yii框架中行為的定義與綁定方法講解
  • 詳解在PHP的Yii框架中使用行為Behaviors的方法
  • 深入講解PHP的Yii框架中的屬性(Property)
  • 深入解析PHP的Yii框架中的event事件機制
  • 全面解讀PHP的Yii框架中的日志功能
  • Yii使用find findAll查找出指定字段的實現(xiàn)方法
  • 解析yii數(shù)據(jù)庫的增刪查改
  • Yii PHP Framework實用入門教程(詳細介紹)
  • 詳解PHP的Yii框架中組件行為的屬性注入和方法注入

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1111911.htmlTechArticlePHP的Yii框架中使用數(shù)據(jù)庫的配置和SQL操作實例教程,yii實例教程 數(shù)據(jù)庫訪問 (DAO) Yii 包含了一個建立在 PHP PDO 之上的數(shù)據(jù)訪問層 (DAO). DAO為...
Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kombinieren Sie zwei einzigartige Werte für PHP -Arrays? Wie kombinieren Sie zwei einzigartige Werte für PHP -Arrays? Jul 02, 2025 pm 05:18 PM

Um zwei PHP -Arrays zusammenzuführen und eindeutige Werte zu behalten, gibt es zwei Hauptmethoden. 1. Verwenden Sie für Index -Arrays oder nur Deduplizierung Array_merge und Array_unique -Kombinationen: Zuerst merge array_merge ($ array1, $ array2) und verwenden Sie dann Array_unique (), um sie endgültig zu erhalten, um ein neues Array zu erhalten, das alle eindeutigen Werte enth?lt. 2. Verwenden Sie für assoziative Arrays und m?chten im ersten Array Schlüsselwertepaare beibehalten: $ result = $ array1 $ array2, was sicherstellt, dass die Schlüssel im ersten Array vom zweiten Array nicht überschrieben werden. Diese beiden Methoden gelten für verschiedene Szenarien, je nachdem, ob der Schlüsselname beibehalten wird oder nur der Fokus liegt

Wie benutze ich die PHP -Exit -Funktion? Wie benutze ich die PHP -Exit -Funktion? Jul 03, 2025 am 02:15 AM

exit () ist eine Funktion in PHP, mit der die Skriptausführung sofort beendet wird. Zu den gemeinsamen Verwendungen geh?ren: 1. Beenden Sie das Skript im Voraus, wenn eine Ausnahme erkannt wird, z. 2. Ausgabe Zwischenergebnisse w?hrend des Debuggens und Stoppenausführung; 3. Aufrufen von Exit () nach Umleitung in Verbindung mit Header (), um die nachfolgende Codeausführung zu verhindern; Zus?tzlich kann Exit () String -Parameter als Ausgabeinhalt oder Ganzzahlen als Statuscode akzeptieren, und sein Alias ??ist die ().

Anwendung der semantischen Struktur mit Artikel, Abschnitt und beiseite in HTML Anwendung der semantischen Struktur mit Artikel, Abschnitt und beiseite in HTML Jul 05, 2025 am 02:03 AM

Die rationale Verwendung semantischer Tags in HTML kann die Klarheit, Zug?nglichkeit und SEO -Effekte der Seitenstruktur verbessern. 1. für unabh?ngige Inhaltsbl?cke wie Blog-Beitr?ge oder Kommentare muss sie in sich geschlossen werden. 2. für klassifizierungsbezogene Inhalte, die normalerweise Titel enthalten, ist für verschiedene Module der Seite geeignet. 3.. Wird für Hilfsinformationen im Zusammenhang mit dem Hauptinhalt verwendet, nicht jedoch Kern, wie z. B. Seitenleistenempfehlungen oder Autorprofile. In der tats?chlichen Entwicklung sollten Etiketten kombiniert und andere, überm??ige Verschachtelung vermeiden, die Struktur einfach halten und die Rationalit?t der Struktur durch Entwicklerwerkzeuge überprüfen.

Wie erstelle ich ein Array in PHP? Wie erstelle ich ein Array in PHP? Jul 02, 2025 pm 05:01 PM

Es gibt zwei M?glichkeiten, ein Array in PHP zu erstellen: Verwenden Sie die Funktion array () oder verwenden Sie Klammern []. 1. Die Verwendung der Funktion array () ist eine traditionelle Art und Weise mit guter Kompatibilit?t. Definieren Sie Indexarrays wie $ fruits = Array ("Apple", "Banana", "Orange") und assoziative Arrays wie $ user = array ("name" => "John", "Age" => 25); 2. Die Verwendung [] ist eine einfachere M?glichkeit, seit Php5.4 wie $ Color zu unterstützen

Der angeforderte Betrieb erfordert H?henfenster Der angeforderte Betrieb erfordert H?henfenster Jul 04, 2025 am 02:58 AM

Wenn Sie auf die Eingabeaufforderung sto?en "Dieser Vorgang erfordert die Eskalation der Berechtigungen", müssen Sie die Administratorberechtigungen ben?tigen, um fortzufahren. Zu den L?sungen geh?ren: 1. Klicken Sie mit der rechten Maustaste auf das Programm "AS Administrator ausführen" oder setzen Sie die Verknüpfung so fest, dass immer als Administrator ausgeführt wird. 2. überprüfen Sie, ob es sich bei dem Girokonto um ein Administratorkonto handelt, falls nicht die Unterstützung von Administratoren, wenn nicht. 3.. Verwenden Sie Administratorberechtigungen, um eine Eingabeaufforderung oder eine PowerShell zu ?ffnen, um relevante Befehle auszuführen. 4. Umgehen Sie die Beschr?nkungen, indem Sie bei Bedarf Dateienbesitz oder ?nderungen der Registrierung ?ndern. Solche Vorg?nge müssen jedoch vorsichtig sein und die Risiken vollst?ndig verstehen. Best?tigen Sie die Erlaubnisidentit?t und versuchen Sie die oben genannten Methoden normalerweise l?sen.

PHP -Roh -Post -Daten PHP PHP -Roh -Post -Daten PHP Jul 02, 2025 pm 04:51 PM

Die M?glichkeit zur Verarbeitung von Roh Postdaten in PHP besteht darin, $ rawdata = file_get_contents ('php: // input') zu verwenden, die zum Empfangen von JSON-, XML- oder anderen benutzerdefinierten Formatdaten geeignet ist. 1.PHP: // Eingabe ist ein schreibgeschützter Stream, der nur in Postanforderungen gültig ist. 2. H?ufige Probleme umfassen Serverkonfiguration oder Middleware -Lese -Eingabestreams, wodurch es unm?glich ist, Daten zu erhalten. 3. Die Anwendungsszenarien umfassen das Empfangen von Front-End-Abrufanfragen, Service-Rückrufe von Drittanbietern und das Erstellen von Rastfulapis; V. 5. Gew?hnlicher HTM

Windows -Suchleiste nicht eingeben Windows -Suchleiste nicht eingeben Jul 02, 2025 am 10:55 AM

Wenn die Windows -Suchleiste keinen Text eingeben kann, sind gemeinsame L?sungen: 1. Starten Sie den Explorer oder Computer neu, ?ffnen Sie den Task -Manager, um den "Windows Explorer" -Prozess neu zu starten, oder starten Sie das Ger?t direkt neu; 2. Versuchen Sie die Eingabemethode, die englische Eingangsmethode oder die eigene Eingabemethode von Microsoft zu verwenden, um Eingabemethodenkonflikte von Drittanbietern zu beseitigen. 3. Führen Sie das System -Tool des Systemdateis aus und führen Sie den Befehl sfc/scannow in der Eingabeaufforderung aus, um die Systemdateien zu reparieren. 4. Setzen oder bauen Sie den Suchindex wieder auf und bauen Sie ihn durch die "Indexoptionen" im "Bedienfeld" neu auf. Normalerweise beginnen wir zuerst mit einfachen Schritten und die meisten Probleme k?nnen Schritt für Schritt gel?st werden.

Wie behandle ich Datei -Uploads sicher in PHP? Wie behandle ich Datei -Uploads sicher in PHP? Jul 08, 2025 am 02:37 AM

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

See all articles