時間の解析中にSQLインジェクションの原則、弱い把握MySQLデータベース、参照新人チュートリアルMySQLのMySQLのチュートリアルスピードブラシ
MySQLの概要
MySQLはMySQLのWEBの点で最も人気のあるリレーショナル・データベース管理システムは、最高のRDBMSのアプリケーションの一つです。(RDBMSリレーショナルデータベースMangagementシステム:リレーショナルデータベース管理ソフトウェア)
データベース、キーワードなどはどのようなものです......
......(コピー&ペーストは、無意味拒否したポータル)
データベースの使用を操作するPHPスクリプト
MySQLの接続
使用してmysqli_connect()
データベースに接続するための機能を、
mysqli_connect(host, username, password, dbname, port, socket)
パラメータ | 説明 |
---|---|
ホスト | オプション。名前またはIPアドレスをホスト |
ユーザ名 | オプション。MySQLのユーザー名 |
パスワード | オプション。MySQLのパスワード |
DBNAME | オプション。データベースの使用 |
港 | オプション。MySQLサーバに接続するポート番号を試してみてください |
ソケット | オプション。プロビジョニングソケットまたは名前付きパイプを使用します |
使用mysqli_close()
関数は、リンクのMySQLデータベースから切断することができますが、スクリプトが終了した後、非永続オープン接続が自動的に閉じられているので、一般的に、必要はありません。
<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>
データベースを作成します。
CREATE DATABASE 数据库名;
PHPスクリプトを使用しmysqli_query()
てデータベースを作成または削除する機能を、
mysqli_query(connection, query, resultmode);
パラメータ | 説明 |
---|---|
接続 | 必須。MySQLの条項使用する接続 |
質問 | 必須。照会する文字列 |
resultmode | オプション。することができ、一定、:MYSQLI_USE_RESULT MYSQLI_STORE_RESULT(あなたが大量のデータを取得する必要がある場合は、これを使用する)(デフォルト) |
データベースインスタンスを作成します。
<?php
$dbhost = 'localhost';
$dbuname = 'root';
$dbpasswd = 'root';
$conn = mysqli_connect($dbhost,$dbuname,$dbpasswd);
if(!$conn)
{
die('Could not connect :'.mysqli_error());
}
echo 'Successfully!!';
$sql = 'CREATE DATABASE RUNOOB';
$retval = mysqli_query($conn,$sql);
if(! $retval)
{
die('Failing to create databse!').mysqli_error($conn);
}
echo "<br>Successfully to create the database<br>";
mysqli_close($conn);
?>
データベースの名前で発見されたケースの一部である、すべて小文字は、大文字の文は、データベースの名前は小文字見るために時間を見つけ、作成することです。
データベースを削除します。
MySQLのコマンドラインでは、dropコマンドを使用します
drop database <数据库名>
主に、以前に説明して、PHPスクリプトで同様のmysqli_query()
SQL文の機能を実行します。
だから、我々はできる......
<?php
$dbhost = 'localhost';
$dbuname = 'root';
$dbpasswd = 'root';
$conn = mysqli_connect($dbhost,$dbuname,$dbpasswd);
if(!$conn)
{
die('Could not connect :'.mysqli_error());
}
echo 'Successfully!!';
$sql = 'DROP DATABASE RUNOOB';
$retval = mysqli_query($conn,$sql);
if(! $retval)
{
die('Failing to DROP databse!').mysqli_error($conn);
}
echo "<br>Successfully to DROP the database<br>";
mysqli_close($conn);
?>
データベースを選択
我々は、データベースを管理するために多くの時間を持っている場合は、複雑なビジネスに直面して、前後にデータベースが不可欠である切り替えます。
コマンドラインで、コマンドは、use 数据库名称
データベースを切り替えることができるようになり、この時間は、私は言葉を見た...... ......
注:すべてのデータベース名、テーブル名を、テーブルのフィールドは大文字と小文字が区別されます。だから、SQLコマンドを使用するときに正しい名前を入力する必要があります。
ああ??本当に恥ずかしいですか?私はそれを自分で試してみることに、私が使用するすべての最初のCREATE DATABASE RUNOOB
成功したデータベースを作成し、それから、私は文を使用しCREATE DATABASE RuNOOB
、結果の作成は、間接的に私の以前のデータベース名は大文字小文字を区別しない声明が、大胆な主張ということである証明され、失敗したエラーコード?実際の後、私はいくつかの情報、以下の結論を見上げました。
- LinuxでのMySQL、データベース名、テーブル名、カラム名、エイリアス総額ルールはこれです:
- データベース名、テーブル名、別名、変数名は、厳格なの大文字と小文字が区別されているリスト
- 列名は、すべての場合に列の別名はケースを無視することです
- Windows上のMySQLは大文字と小文字を区別しません
もちろん、静的ではなく、Linuxでは、設定ファイルを変更することで、大文字と小文字を区別をなくし/etc/my.cnf
、追加lower_case_table_names = 1
、Windowsのは、MySQLの設定ファイルにすることができますmy.ini
追加します。大文字と小文字を区別しないパラメータ1は、大文字と小文字を区別しないパラメータを表し、0を表します。参考記事1件の
参考記事2
だから我々はなかった......どこ?ああ、引き続き、データベースを選択します。
PHPスクリプト機能を使用してmysqli_select_db()
データベースを選択します。機能が正常に実行がTRUEを返した後、そうでない場合はFALSEを返します。
mysqli_select_db(connection, dbname);
パラメータ | 説明 |
---|---|
接続 | 必須。MySQLの条項使用する接続 |
DBNAME | 必須。これは、データベースの使用を提供します |
データテーブルを作成します。
データテーブルを作成するために必要な情報は以下のとおりです。
- テーブル名
- 表のフィールド名
- 各テーブルのフィールドの定義
構文:CREATE TABLE table_name (column_name column_type);
PHPスクリプトでデータテーブルを作成します。
まだmysqli_query()
成功し、TRUEを返します実行された機能、FALSEを返すことができなかった
、覚えていますか?これは、ページを上げるために言葉を忘れカザフスタンの3つのパラメータです。
第二の必須パラメータquery
代表が私たちの主な機能の一部であり、SQL文、別の1までを開くことができるSQL言語を総合的に紹介。
データシートを削除します。
操作は非常に危険です削除し、データベースを削除して、リポジトリはデータテーブルを削除し、あまりにも、失われます、データテーブルが失われます。
構文:DROP TABLE table_name ;
PHPスクリプトでは、mysqli_query()
機能
彼は加えました:
- テーブル内のデータを削除し、使用して[削除]を:
DELETE FROM 表名 WHERE 删除条件;
- データテーブルをクリアし、との保持構造テーブルTRUNCATE:
TRUNCATE TABLE 表名;
データの挿入
構文:
INSERT INTO table_name (field1, field2, ... fieldN)
VALUES
(value1, value2, ... valueN);
データが文字である場合は、単一引用符または二重引用符を使用しなければならない、など"value"
私は、コードの成功のテストとして出てきた環境からコピーします。
<?php
$dbhost = 'localhost';
$dbuname = 'root';
$dbpasswd = 'root';
$conn = mysqli_connect($dbhost,$dbuname,$dbpasswd);
if(!$conn)
{
die('Could not connect :'.mysqli_error());
}
echo 'Successfully!!';
/*Above is about if successfully connecting to the database*/
mysqli_query($conn,"set names utf8");
$runoob_name = 'blackcat';
$runoob_id = 1;
$runoob_time = '2019-6-1';
$sql = "INSERT INTO runoob_tb1 (id,name,dates) VALUES ".
"('$runoob_id','$runoob_name','$runoob_time')";
mysqli_select_db($conn,'RUNOOB');
$retval = mysqli_query($conn,$sql);
if(! $retval)
{
die('<br>Failing to do').mysqli_error($conn);
}
echo "<br>Successfully to do<br>";
mysqli_close($conn);
?>
もちろん、これは、INSERT文で、値の前に括弧はフィールド名の前提条件です、我々はデータを挿入すると、それはVALUESの後に、各列の名前で、そのうちの数であり、他のタイプが対応しているが、 :ここでピット埋葬単一引用符を使用する理由VALUES句、後ろの3人の変数名を?
クエリデータ
構文:
SELECT column_name, column_name
FROM table_name
[WHERE Clause]
[ LIMIT N ] [ OFFSET M ]
- クエリはコンマ(使用して、1つまたは複数のテーブルを使用してもよい
,
)を分離します。 - SELECTコマンドは、1つ以上のレコードを読み取り
- ワイルドカードのアスタリスクを(使用することができ
*
、代わりに他のフィールド) - 設定するために使用されるWHEREクエリが任意の条件が含まれていてもよいです
- LIMITは、返されたレコードの数を使用して設定されています
- クエリの開始を指定するには、SELECT文を使用してデータオフセットを相殺しました。0オフセットデフォルトで、
PHP関数を使用してクエリデータの成功後、mysqli_fetch_array()
第2のパラメータとMYSQLI_ASSOCパラメータクエリの結果は、他の機能連想配列に返される設定mysqli_fetch_assoc()
結果セットから連想配列として機能行のを。何マルチラインは、falseを返していない場合には、取得された結果セットから生成された連想配列を返します。
行は、単純にこの機能を使用すると、結果が機能する場合、フィールド名の配列インデックスとして返され問い合わせることができているmysqli_fetch_array()
二番目のパラメータのですMYSQLI_NUM、それはデジタルコンテンツインデックスの使用は、レコードを取得し、数字の配列を返します。