ホームページ  >  記事  >  バックエンド開発  >  PHP での MySQL の使用

PHP での MySQL の使用

WBOY
WBOYオリジナル
2016-06-23 14:31:181067ブラウズ

MySQL に接続します:

mysql_connect():

$dbc=mysql_connect($host,$user,$password);

現在のデータベースを選択します:

mysql_select_db($database_name);

mysq l_select_db(' $database_name',$conn);

eg:

<body>  <?php    DEFINE('DB_USER','root');DEFINE('DB_PWD','mysql');DEFINE('DB_HOST','localhost');DEFINE('DB_NAME','content'); $dbc=@mysql_connect(DB_HOST,DB_USER,DB_PWD) OR die ('Could not connect to MySQL:'.mysql_error());@mysql_select_db(DB_NAME) or die ('Could not select the database:'.mysql_error());  ?></body>

関数が有効なリソースリンクを返せない場合、または die() が実行され、die() 関数はスクリプトの実行を終了します。

簡単なクエリを実行します:

$result=mysql_query($query);

、削除などの簡単なクエリクエリの場合、レコードは返されません。$result 変数は、クエリは正常に実行されました。レコードを返す複雑なクエリ (select、show、describe、および Explain) の場合、クエリが有効な場合、$result 変数はクエリ結果へのリソース リンクになります。クエリが無効な場合、$result 変数は次のようになります。間違い。

既存の MySQL 接続を閉じます。

mysql_close(); //php はスクリプトの最後に接続を自動的に閉じるため、これは必要ありません。

 1 <body> 2 <?php 3   $page_title='Register'; 4   include('Noname1.php'); 5   if(!empty($_POST['submit'])) 6   { 7   $errors=array(); 8   } 9   if(empty($_POST['name']))10   {11   $errors[]='You forgot to enter your name.';12   }13   else14   {15   $name=$_POST['name'];16   }17  18   if(empty($_POST['email']))19   {20   $errors[]='You hava fotgot to enter your email';21   }22   else23   {24   $email=$_POST['email'];25   }26  27   if(!isset($_POST['gender']))28   {29   $errors[]='You hava forgot to enter your gender';30   }31   else32   {33   $gender=$_POST['gender'];34   }35  36   /*if(!empty($POST['comments']))37   {38   $comments=$_POST['comments'];39   }40   else41   {42   $errors[]='You hava forgot to set the comments';43   }*/44   if(empty($errors))45   {46   require_once('connectdb.php');47   $query="insert into urls(url,title,description) values('$name','$email','$gender')";48   $result=@mysql_query($query);49   if($result)50   {51   echo '<h1> Thank you!</h1>';52   }53   else54   {55   echo 'System error'.mysql_error();56   }57   }58   else59   {60   echo '<h1 id="mainhead">Error!</h1>';61   foreach($errors as $msg)62   {63   echo "-$msg<br>\n";64   }65   echo 'Please try again!';66   }67 ?>68 </body>

説明: mysql_fetch_row は行を保存するために使用されます配列の添字は 0 から始まり、各配列要素は

ドメインに対応します。ループ処理により、すべてのクエリ結果を取得できます。

形式:

mysql_fetch_row(result);

説明: mysql_fetch_array と mysql_fetch_row の機能は、

インデックス、ドメイン名として 0 から始まるオフセットを使用する点を除いて、基本的に同じです。としても使用できますインデックス。

Value は次の行のすべてのフィールド値を返し、行がない場合は false を返します。


結果の主なツールは mysql_fetch_array() で、クエリ結果変数 ($result) を取得して返します。配列としてこの形式は一度に 1 行のデータを返します。

Mysql_fetch_array () 関数もあります返される配列のタイプを指定するオプション: 結合配列、インデックス配列、配列、または then両方。連想配列では列の値を名前で参照できますが、インデックス付き配列では次のとおりです。

MYSQL_ASSOC

$row['column']

MYSQL_NUM

$row[0] (わずかに高速)

MYSQL_BOTH

$row[0] または $row['column' ] (デフォルト)

 

 

      释放查询信息:

        

   mysql_free_result($result);

  

           这一步不是必需的,因为PHP将在脚本末尾自动释放资源。

 

      eg:

      

 1 <?php 2   require_once('connectdb.php'); 3   $query="select concat(url,',',title) as name ,url_id as id from urls"; 4   $result=@mysql_query($query); 5   if($result) 6   { 7   echo '<table align="center" cellspacing="0" cellpadding="5"> 8    <tr><td align="left"><b>NAME</b></td><td align="left"><b>id</b></td>'; 9  10    while($row=mysql_fetch_array($result,MYSQL_ASSOC))11    {12    echo '<tr><td align="left">'.$row['name'].'</td><td align="left">'.$row['id'].'</td></tr>';13    }14    echo '</table>';15    mysql_free_result($result);16   }17  18   else19   {20   echo '<p>The current users could not be retrieved.We apologize for any inconvenience</p>';21   echo mysql_error();22   }23   mysql_close();24  25 ?>

  

 

运行结果为:

 

 

技巧总结

 

mysql_fetch_array()函数与mysql_fetch($result,MYSQL_NUM)函数等价

mysql_fetch_assoc()函数与mysql_fetch_array($result,MYSQL_ASSOC)函数等价

必需使用mysql_query()执行查询,然后使用mysql_fetch_array()来检索单行信息,如果要检索多行,则可使用while循环(而不要使用for或foreach循环)。


 

确保SQL安全

 

关于PHP的数据库安全可归纳为两大类问题:

 1.保护数据库访问信息

 2.在运行查询时要小心。

     使用特定的

mysql_real_escape_string()

函数,转义那些有可能有问题的字符来清理数据:

        $data=mysql_real_escape_string($data,$dbc);

     这个函数与addslashes()一样。它更特定于数据库。

    使用ini_get()函数测试Magic Quotes状态,这个函数将为特定的选项返回PHP的配置文件中的配置。如果ini_get() 函数返回true,就说明打开了Magic Quotes??则将在应用mysql_real_escape_string()之前,去除所有的斜杠。

      在pHP的当前版本中,Magic Quotes默认是关闭的,因此ini_get()将返回FALSE,并且不需要去除任何现有的斜杠。

      如果Magic Quotes是开启的情况下,它会自动在需要转义的字符前加上“\”,而我们向数据库中写入的时候这往往会引起错误,所以需要使用stripslashes($string)把那些\去掉。然后再调用mysql_real_escape_string()函数。

 

        eg:

          

1    function escape_data($data)2               {3          global $dbc;4          if(ini_get('magic_quotes_gpc'))5           {6         $data=stripslashes($data);7            }8   retrun mysql_real_escape_string(trim($data),$dbc);9   }

  

 

 

        技巧总结

 

 

mysql_real_escape_String()函数一招所用的语言对字符串进行转义

mysql_real_escape_string()函数需要一个数据库连接。

get_magic_quotes_gpc()函数也可用于返回当前的Magic Quotes设置。

ini_get()可用于获取许多不同的php.ini设置的内容,不只是Magic Quotes的设置。

 

 

 

  统计返回的记录

 

mysql_num_rows(),返回select查询索引的行数,并取查询的结果作为一个参数。

 eg:

        $num=mysql_num_rows($result);

 

 

  其他常用Mysql函数介绍

 

mysql_insert_id

 传回最后一次使用 INSERT 指令的 ID。


mysql_tablename

 取得数据库名称

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