質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

2回答

5950閲覧

MariaDBにphp-mysqlで接続してクエリを実行したい

DaichiYasuda

総合スコア173

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2016/08/17 12:44

環境
phpのバージョン
PHP 5.4.16 (cli) (built: Aug 11 2016 21:24:59)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

MariaDBのバージョン
mysql Ver 15.1 Distrib 10.1.16-MariaDB, for Linux (x86_64) using readline 5.1

したいこと
MariaDBで設定しているレプリケーションを監視するPHPを作成したい。

問題点
mysql_query("show slave status", $connect)の箇所でエラーが出る。
クエリが実行できていないっぽい

php

1<?php 2 print("<body>\n"); 3 4 $url = "192.168.1.2"; 5 $user = "slave"; 6 $pass = "XXXXXXX"; 7 $db = "test"; 8 $sel_result = "failed"; 9 10 $connect = mysql_connect($url,$user,$pass) or die("Connect Failed"); 11 12 $res = mysql_query("show slave status", $connect) or die("error!"); 13 $row = mysql_fetch_assoc($res); 14 15 if($row['Slave_IO_Running'] == 'No'){ 16 print "Replication Error \n"; 17 } 18 elseif($row['Slave_SQL_Running']== 'No'){ 19 print "Replication Error \n"; 20 } 21 else{ 22 print "error :0:"; 23 } 24?>

ご教授お願い致します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dupont_kedama

2016/08/17 18:10

「エラーが出る」とはどのようなエラーでしょうか。 mysqlコマンドクライアントなどから同じユーザーで接続してクエリは実行可能でしょうか。
DaichiYasuda

2016/08/18 11:24

エラーが出るというのは接続できなかった場合に出力する「error!」という文言が出るという意味になります。 ログを見てもそれらしいログはデておりません
guest

回答2

0

ベストアンサー

どんな理由で失敗するかを特定できない状態でdieで情報を握り潰してもあまりいいことがなさそうなので、

まずは

php

1$res = mysql_query("show slave status", $connect) or die("error!");

の代わりに

php

1$res = mysql_query("show slave status", $connect); 2if (!$res) { 3 die(mysql_errno($connect) . ": " . mysql_error($connect) . "\n"); 4}

などのようにして、どんな問題が起きているかを出してみたほうがいいと思います。(参考)
エラーメッセージには文字通りの内容のものもあるので、まずは出てくるメッセージを読み解いてみては。

投稿2016/08/18 12:43

attakei

総合スコア2738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaichiYasuda

2016/08/18 13:08

ありがとうございます エラーメッセージを出してみたところslaveユーザに権限がありませんでした。 権限を付与したところ問題なく動きました どうもありがとうございました!!
guest

0

mysql_connect などの「mysql_」で始まる関数名は PHP5.5で非推奨となり、PHP7.0以降では拡張機能が削除されていますのでPDOでMySQLに接続しましょう。

PHP

1<?php 2 3try { 4 $pdo = new PDO('mysql:host=192.168.1.2;dbname=test;charset=utf8','slave','"XXXXXXX"'); 5 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 6 7}catch(PDOException $e){ 8 echo $e->getMessage(); 9 exit; 10} 11 12

例えば以下のフォームがあるとします

HTML

1<form action="" method="post"> 2 名前:<input type="text" name="name"> 3コメント:<input type="text" name="comment"> 4<input type="submit" value="投稿"> 5</form>

これを bbsテーブルの nameカラムとcommentカラムに挿入する場合はPDOのプリペアステートメントを利用してやる必要があります。また、ユーザー入力を受け取るので filter_input_arrayで入力データを取得します。

PHP

1<?php 2if( filter_input(INPUT_SERVER, 'REQUEST_METHOD') === 'POST') { 3 // 入力データをサニタイジングして取得 4 $args = array( 5 'name' => FILTER_SANITIZE_STRING, 6 'comment' => FILTER_SANITIZE_STRING); 7 $postdata = filter_input_array(INPUT_POST, $args); 8 9 //SQL発行 10 $sql = "INSERT INTO bbs (name, comment) VALUES (:name, :comment)"; 11 $stmt = $pdo->prepare($sql); 12 $stmt->bindValue(":name", $postdata['name'], PDO::PARAM_STR); 13 $stmt->bindValue(":comment", $postdata['comment'], PDO::PARAM_STR); 14 $stmt->execute(); 15}

投稿2016/08/17 13:48

naohiro19

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaichiYasuda

2016/08/18 11:26

回答ありがとうございます ただphp5.5以降、php7を使用する予定はこのシステムでは今のところ考えておりません。 php5.4接続する方法はないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問