通过PHP操作数据库

コメント 2020-03-17 214706.png

我将显示您从表格中选择的职位。

设定变量

    $job = '';//selectの中の値
    $host = '';//データベースのホスト名またはIPアドレス
    $username = '';//ユーザー名
    $passwd = '';//パスワード
    $dbname = '';//データベース名
    //データベースの情報を渡して接続する値を$linkに代入する
    $link = mysqli_connect($host, $username, $passwd, $dbname);

只需一个选项,在中国以本地化的方式改写:

通过myspli_connect函数中括号内的信息来连接数据库。返回值是连接数据库的ID,用来指定已连接的数据库。

    emp_idは社員番号
    emp_nameは名前
    emp_tableはtable名
    if($link) {
        //文字化け防止
        mysqli_set_charset($link, 'utf8');
        //最初か全部選択を選んだ時
        if($job === '' || $job === '全部選択') {
    //実行する内容を$queryに代入する 
            $query = 'SELECT emp_id, emp_name, job, age FROM emp_table 
                    ORDER BY emp_id';
    //他の職種を選んだ時
        } else {
        //実行する内容を$queryに代入する    
     $query = 'SELECT emp_id, emp_name, job, age FROM emp_table 
                    WHERE job = "'.$job.'" ORDER BY emp_id';            
        }
//社員番号順にtableから3つのカラムを取得する
$query = 'SELECT emp_id, emp_name, job, age FROM emp_table 
         ORDER BY emp_id ASC';

“ORDER BY用于确定顺序。”

    ASC・・・昇順
    DESC・・・降順
//社員番号順にtableから3つのカラムの中から選んだ職種を取得
$query = 'SELECT emp_id, emp_name, job, age FROM emp_table 
          WHERE job = "'.$job.'" ORDER BY emp_id';  

我们设定了条件。
由于变量在字符串中不能直接使用,所以写成了这种方式。
顺便说一下,这样更容易理解。

$query = "SELECT emp_id, emp_name, job, age FROM emp_table 
          WHERE job = '$job' ORDER BY emp_id";

执行查询

        $result = mysqli_query($link, $query);
        //1行ずつ配列を取得する
        while($row = mysqli_fetch_array($result)) {
        //取得したデータを配列にする    
     $goods_data[] = $row;           
        }

如果mysqli_query()被用于SELECT,则会返回选择的数据。如果用于UPDATE、DELETE,则会返回true或false。

当调用mysqli_fetch_array()函数成功时,将返回一个行数组,并且当没有可用的行时将返回null,若调用失败则返回false。

        mysqli_free_result($result);
        mysqli_close($link);
     

mysqli_free_result()函数用于释放存储的内存。
当使用mysqli_query()函数获取数据时,应立即释放。
mysqli_close()函数用于断开与数据库的连接。

所有的代码 de

<?php
    $job = '';
    $host = '';
    $username = '';
    $passwd = '';
    $dbname = '';
    //データベースの情報を渡して接続する値を$linkに代入する
    $link = mysqli_connect($host, $username, $passwd, $dbname);

    if(isset($_GET['job'])=== true) {
        $job = $_GET['job'];        
    }
    if($link) {
        //文字化け防止
        mysqli_set_charset($link, 'utf8');
        if($job === '' || $job === '全部選択') {
            $query = 'SELECT emp_id, emp_name, job, age FROM emp_table 
                    ORDER BY emp_id';
        } else {
            $query = "SELECT emp_id, emp_name, job, age FROM emp_table 
                    WHERE job = '$job' ORDER BY emp_id";

        }
        //クエリを実行
        $result = mysqli_query($link, $query);
        //1行ずつ配列を取得する
        while($row = mysqli_fetch_array($result)) {
            $goods_data[] = $row;
            // var_dump($row);
        }
        mysqli_free_result($result);
        mysqli_close($link);
    }
?>
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8">
   <title>サンプル</title>
   <style type="text/css">
       table, td, th {
           border: solid black 1px;
       }
       table {
           width: 200px;
       }
   </style>
</head>
<body>
    <p>表示する職種を選択してください。</p>
   <form>
       <select name="job">
           <option>全部選択</option>
           <option>manager</option>
           <option>analyst</option>
           <option>clerk</option>           
       </select>
       <input type="submit" value="表示">
   </form>
   <table>
       <tr>
           <th>社員番号</th>
           <th>名前</th>
           <th>職種</th>
           <th>年齢</th>
       </tr>
<?php
foreach ($goods_data as $value) {
?>
        <tr>
            <td><?php print htmlspecialchars($value['emp_id'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php print htmlspecialchars($value['emp_name'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php print htmlspecialchars($value['job'], ENT_QUOTES, 'UTF-8'); ?></td>
            <td><?php print htmlspecialchars($value['age'], ENT_QUOTES, 'UTF-8'); ?></td>
        </tr>
<?php
}
?>
   </table>
</body>
</html>

bannerAds