[PHP] 04 MySQLアプリ作成

[M1 Mac, Big Sur 11.7.2, PHP 8.2.1, MySQL 8.0.31]

簡単なMySQLアプリを作成しました。

フローは以下の通りです。
1) シェルスクリプトファイルをダブルクリックし、mysql_main.phpを実行する。
2) input.phpが表示される。
3) 検索語を入力し、検索ボタンを押す。
4) output.phpにヒット数が表示される。

作成したスクリプトを土台に肉付けしていきます。

<?php
require_once ('../../composer/vendor/autoload.php');
use Facebook\WebDriver\Chrome\ChromeDriver;

# MySQLサーバ起動判定
exec('mysqladmin ping', $out, $ret);
echo $out[0];
echo "\n";

if(strpos($out[0],'alive') === false){
    exec('mysql.server start');
}else{
    print 'MySQLは起動しています';
    echo "\n";
}

# Webサーバ起動
exec('php -S localhost:8890 -t "/code/PHP/projects/02_mysql_lpw03" > /dev/null &');

# chromedriverのパス設定
$driverPath = realpath("/opt/homebrew/Caskroom/chromedriver/107.0.5304.62/chromedriver");
putenv("webdriver.chrome.driver=" . $driverPath);

# Chromeを起動しphpスクリプトを実行
$driver = ChromeDriver::start();
$driver->get('http://localhost:8890/input.php');

?>
<html>
<head>
	<title>MySQL LPW</title>
</head>
<body>
検索語を入力してください
	<form action="output.php" method="post">
		<table border="1">
		<tr>
			<td><input type="text" name="key"></td>
			<td colspan="2" align="center">
			<input type="submit" value="検索">
			</td>
		</tr>
		</table>
	</form>
</body>
<?php
?>
</html>
<html>
<head>
    <title>MySQL LPW</title>
</head>
<body>
    <?php
    $key = $_POST['key'];
    printf("検索語 : %s\n", $key);

    # MySQLにログイン
    $conn = new mysqli('localhost', 'root');
    if (!$conn){
        die("MySQL接続に失敗しました");
    } else {
        // print 'MySQL接続に成功しました';
    }

    # データベース選択
    $select_db = 'use lpw';
    $select = $conn->query($select_db);

    // クエリの実行
    $query = sprintf("SELECT * FROM `lpw_aa` WHERE `Email` LIKE '%%%s%%'", $key);
    // echo $query;

    $result = $conn->query($query);
    $rows = $result->fetch_all(MYSQLI_ASSOC);
    $count = count($rows);
    // printf("件数 : %d\n", $count);

    foreach ($rows as $row) {
        // printf("%s %s\n", $row["Email"], $row["Name"]);
    }

    $conn->close();
    exec('mysql.server stop');

    ?>
    <table border="2">
    <tbody>
        <tr>
            <td>件数</td>
            <td width="180"><?php echo $count; ?></td>
        </tr>
    </tbody>
    </table>
</body>
</html>

[PHP] 03 MySQL検索

[M1 Mac, Big Sur 11.7.2, PHP 8.2.1, MySQL 8.0.31]

MySQLサーバに接続して検索し、結果をChromeに表示させました。

PHP7からMySQL関連の関数が刷新されていました。PHP5以前の情報もネットに多く残っており、非常に紛らわしいです。

少なくとも記事の公開日とPHPのバージョンを明記して欲しいです。

<?php

require_once ('../../composer/vendor/autoload.php');
use Facebook\WebDriver\Chrome\ChromeDriver;

# カレントディレクトリ変更
$cmd_cd_fmt = 'cd %s';
$cmd_cd = sprintf($cmd_cd_fmt, "/code/PHP/projects/mysql03");
exec($cmd_cd);

# MySQLサーバ起動判定
exec('mysqladmin ping', $out, $ret);
echo $out[0];
echo "\n";

if(strpos($out[0],'alive') === false){
    exec('mysql.server start');
}else{
    print 'MySQLは起動しています';
    echo "\n";
}

# Webサーバ起動
exec('php -S localhost:8888 -t "/code/PHP/projects/mysql03" > /dev/null &');

# chromedriverのパス設定
$driverPath = realpath("/opt/homebrew/Caskroom/chromedriver/107.0.5304.62/chromedriver");
putenv("webdriver.chrome.driver=" . $driverPath);

# Chromeを起動しphpスクリプトを実行
$driver = ChromeDriver::start();
$driver->get('http://localhost:8888/mysql_html.php');

exec('mysql.server stop');

?>
<html>
<head>
<title>MySQL TOOL</title>
</head>
<body>
<?php

# MySQLにログイン
$conn = new mysqli('localhost', 'root');
if (!$conn){
    die("MySQL接続に失敗しました");
} else {
    print 'MySQL接続に成功しました';
}

# データベース選択
$select_db = 'use data';
$select = $conn->query($select_db);

# 検索実行
$query = "SELECT * FROM `TableA` WHERE `Name` LIKE '%suzuki%'";
$result = $conn->query($query);
$rows = $result->fetch_all(MYSQLI_ASSOC);
foreach ($rows as $row) {
    printf("%s %s %s %d %d\n", $row["A"], $row["B"], $row["C"], $row["D"], $row["E"]);
}

$conn->close();

?>
</body>
</html>

[PHP] 02 MySQLサーバ起動

[M1 Mac, Big Sur 11.7.2, PHP 8.2.1, MySQL 8.0.31]

PHPスクリプトでMySQLを起動し、Chromeに起動の有無を表示させました。

MySQL検索機能をWebアプリ化できないか検討を進めていきます。

JavaScriptでは何度も挫折しましたが、PHPを足掛かりにWebアプリ製作に関するスキルを身につけていきたいです。

1.chromedriverのダウンロード
  方法は省略

2.Composerのインストール
brew install composer

3.php-webdriverのインストール
  composerディレクトリを作成しカレントディレクトリにしてから以下コマンドを実行
curl -sS https://getcomposer.org/installer | php
php composer.phar require facebook/webdriver
<?php

require_once ('../../composer/vendor/autoload.php');
use Facebook\WebDriver\Chrome\ChromeDriver;

# MySQLサーバ起動
exec('mysql.server start');

# 簡易Webサーバ起動
exec('php -S localhost:8000 -t /code/PHP/projects/mysql > /dev/null &');

# chromedriverのパス設定
$driverPath = realpath("/opt/homebrew/Caskroom/chromedriver/107.0.5304.62/chromedriver");
putenv("webdriver.chrome.driver=" . $driverPath);

# Chromeを起動しphpスクリプトを実行
$driver = ChromeDriver::start();
$driver->get('http://localhost:8000/230110_mysql_html.php');

?>
<html>
<head>
<title>MySQL TOOL</title>
</head>
<body>
<?php

exec('mysqladmin ping', $out, $ret);
echo $out[0];
echo "\n";

?>
</body>
</html>

[PHP] 01 macOSに XAMPPをインストールできない場合の対処

[macOS 10.15 Catalina]

WordPressを扱うにあたってPHPを少し勉強しようと思い、VScodeでの環境構築に着手しました。

その過程でXAMPPをインストールしようとして少しハマったのでメモします。

結論から書くと、ChromeではなくSafariからダウンロードしましょう。

そしてダウンロードボタンを押さずに右クリックで保存を選択してください。

あとは通常通りです。

この後VScodeでデバッグできるように設定するところでつまづき、結局MAMPに変えました。

ネックはXdebugのインストールでした。これを入れないとVScodeの拡張機能 PHP Debugが動きません。

MAMPには元からXdebugが入っているのでそのような手間が不要です。

参考記事