<ol class=dp-xml><li class=alt><span><span><?php </span></span><li class=""><span>function get_user_id( $name ) </span><li class=alt><span>{ </span><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></span><li class=alt><span> mysql_select_db( 'users' ); </span><li class=""><span> </span><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></span><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></span><li class=alt><span> </span><li class=""><span> return $id; </span><li class=alt><span>} </span><li class=""><span> </span><li class=alt><span>var_dump( get_user_id( 'jack' ) ); </span><li class=""><span>?> </span></li></ol>注意使用了 mysql_connect 函数来实现php直接使用mysql。还要注意查询,其中使用字符串连接来向查询添加 $name 参数。
该技术有两个很好的替代方案:PEAR DB 模块和 PHP Data Objects (PDO) 类。两者都从特定数据库选择提供抽象。因此,您的代码无需太多调整就可以在 IBM? DB2?、MySQL、PostgreSQL 或者您想要连接到的任何其他数据库上运行。
使用 PEAR DB 模块和 PDO 抽象层的另一个价值在于您可以在 SQL 语句中使用 ? 操作符。这样做可使 SQL 更加易于维护,且可使您的应用程序免受 SQL 注入攻击。
使用 PEAR DB 的替代代码如下所示。
清单 2. Access/get_good.php
立即学习“PHP免费学习笔记(深入)”;
<OL class=dp-xml><LI class=alt><SPAN><SPAN><?php </SPAN></SPAN><LI class=""><SPAN>require_once("DB.php"); </SPAN><LI class=alt><SPAN> </SPAN><LI class=""><SPAN>function get_user_id( $name ) </SPAN><LI class=alt><SPAN>{ </SPAN><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></SPAN><LI class=alt><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>db</FONT></SPAN><SPAN> =& DB::Connect( $dsn, array() ); </SPAN></SPAN><LI class=""><SPAN> if (PEAR::isError($db)) { die($db->getMessage()); } </SPAN><LI class=alt><SPAN> </SPAN><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></SPAN><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></SPAN><LI class=""><SPAN> while( $res->fetchInto( $row ) ) { $</SPAN><SPAN class=attribute><FONT color=#ff0000>id</FONT></SPAN><SPAN> = $row[0]; } </SPAN></SPAN><LI class=alt><SPAN> </SPAN><LI class=""><SPAN> return $id; </SPAN><LI class=alt><SPAN>} </SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>var_dump( get_user_id( 'jack' ) ); </SPAN><LI class=""><SPAN>?> </SPAN></LI></OL>注意,所有PHP直接使用MySQL的地方都消除了,只有 $dsn 中的数据库连接字符串除外。此外,我们通过 ? 操作符在 SQL 中使用 $name 变量。然后,查询的数据通过 query() 方法末尾的 array 被发送进来。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号