ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルで MySQL を直接使用する具体的な機能の紹介

PHP_PHP チュートリアルで MySQL を直接使用する具体的な機能の紹介

WBOY
WBOYオリジナル
2016-07-15 13:29:52963ブラウズ

私たちは リスト 1 に取り組んでいます。 Access/get.php

<ol class="dp-xml">
<li class="alt"><span><span><?php  </span></span></li>
<li class=""><span>function get_user_id( $name )  </span></li>
<li class="alt"><span>{  </span></li>
<li class="">
<span> $</span><span class="attribute"><font color="#ff0000">db</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">mysql_connect</font></span><span>( 'localhost', 'root', 'password' );  </span>
</li>
<li class="alt"><span> mysql_select_db( 'users' );  </span></li>
<li class=""><span> </span></li>
<li class="alt">
<span> $</span><span class="attribute"><font color="#ff0000">res</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">mysql_query</font></span><span>( "SELECT id FROM users WHERE </span><span class="attribute"><font color="#ff0000">login</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">'".$name."'</font></span><span>" );  </span>
</li>
<li class="">
<span> while( $</span><span class="attribute"><font color="#ff0000">row</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">mysql_fetch_array</font></span><span>( $res ) ) { $</span><span class="attribute"><font color="#ff0000">id</font></span><span> = $row[0]; }  </span>
</li>
<li class="alt"><span> </span></li>
<li class=""><span> return $id;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span> </span></li>
<li class="alt"><span>var_dump( get_user_id( 'jack' ) );  </span></li>
<li class=""><span>?> </span></li>
</ol>

mysql_connect 関数は、PHP が MySQL を直接使用できるようにするために使用されることに注意してください。また、文字列連結を使用して $name パラメーターをクエリに追加するクエリにも注目してください。

このテクノロジーには、PEAR DB モジュールと PHP データ オブジェクト (PDO) クラスという 2 つの優れた代替手段があります。どちらも、特定のデータベース選択からの抽象化を提供します。そのため、コードは、IBM® DB2®、MySQL、PostgreSQL、または接続したいその他のデータベース上でほとんど調整することなく実行できます。

PEAR DB モジュールと PDO 抽象化レイヤーを使用するもう 1 つの利点は、SQL ステートメントで ? 演算子を使用できることです。これにより、SQL の保守が容易になり、アプリケーションを SQL インジェクション攻撃から保護できます。

PEAR DBを使用した代替コードを以下に示します。

リスト 2. Access/get_good.php

<ol class="dp-xml">
<li class="alt"><span><span><?php  </span></span></li>
<li class=""><span>require_once("DB.php");  </span></li>
<li class="alt"><span> </span></li>
<li class=""><span>function get_user_id( $name )  </span></li>
<li class="alt"><span>{  </span></li>
<li class="">
<span> $</span><span class="attribute"><font color="#ff0000">dsn</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">'mysql://root:password@localhost/users'</font></span><span>;  </span>
</li>
<li class="alt">
<span> $</span><span class="attribute"><font color="#ff0000">db</font></span><span> =& DB::Connect( $dsn, array() );  </span>
</li>
<li class=""><span> if (PEAR::isError($db)) { die($db->getMessage()); }  </span></li>
<li class="alt"><span> </span></li>
<li class="">
<span> $</span><span class="attribute"><font color="#ff0000">res</font></span><span> = $db->query( 'SELECT id FROM users WHERE </span><span class="attribute"><font color="#ff0000">login</font></span><span>=?',array( $name ) );  </span>
</li>
<li class="alt">
<span> $</span><span class="attribute"><font color="#ff0000">id</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">null</font></span><span>;  </span>
</li>
<li class="">
<span> while( $res->fetchInto( $row ) ) { $</span><span class="attribute"><font color="#ff0000">id</font></span><span> = $row[0]; }  </span>
</li>
<li class="alt"><span> </span></li>
<li class=""><span> return $id;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span> </span></li>
<li class="alt"><span>var_dump( get_user_id( 'jack' ) );  </span></li>
<li class=""><span>?> </span></li>
</ol>

$dsn のデータベース接続文字列を除き、PHP が MySQL を直接使用する場所はすべて削除されていることに注意してください。さらに、SQL では ? 演算子を介して $name 変数を使用します。次に、クエリ データは、query() メソッドの最後で配列を通じて送信されます。


www.bkjia.com本当http://www.bkjia.com/PHPjc/446326.html技術記事リスト 1 に取り組んでいます。 Access/get.php
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。