お知らせ
ご利用前に必ずお読みください。
フォーラムTOP > Xfree(旧無料レンタルサーバー) > phpからMySQLへ接続できません

phpからMySQLへ接続できません

by SQLSTATE[42000] [1044]エラーさん (d992da96)
投稿数:0回
(ベストアンサー:0回)
2020/08/12 23:44
自分のパソコンを使ってPHPとMySQLの通販ショッピングのポートフォリオを作りました。サーバーに上げようとしてるのですが、ログイン画面からのDB接続が上手くいきません。

自分のパソコン→
<?php session_start(); ?>
<?php require '../header.php'; ?>
<?php require 'menu.php'; ?>
<?php
unset($_SESSION['customer']);
$pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8','staff', 'password');
$sql=$pdo->prepare('select * from customer where login=? and password=?');
$sql->execute([$_REQUEST['login'], $_REQUEST['password']]);
foreach ($sql as $row) {
$_SESSION['customer']=…続く

XFREEのMySQLホスト名…mysql1.php.xdomain.ne.jp
XFREEのデータベースユーザ名…rt88_shop
XFREEのデータベースパスワード…password
だったので

<?php session_start(); ?>
<?php require '../header.php'; ?>
<?php require 'menu.php'; ?>
<?php
unset($_SESSION['customer']);
$pdo=new PDO('mysql:host=mysql1.php.xdomain.ne.jp;dbname=shop;charset=utf8','rt88_shop','password');
$sql=$pdo->prepare('select * from customer where login=? and password=?');
$sql->execute([$_REQUEST['login'], $_REQUEST['password']]);
foreach ($sql as $row) {
$_SESSION['customer…続く
にすると
Fatal error: Uncaught PDOException: SQLSTATE[42000] [1044] Access denied for user 'rt88_shop'@'sv5.php.xdomain.ne.jp' to database 'shop' in /home/rt88/rt88.php.xdomain.jp/public_html/sample/login-output.php:6 Stack trace: #0 /home/rt88/rt88.php.xdomain.jp/public_html/sample/login-output.php(6): PDO->__construct('mysql:host=mysq...', 'rt88_shop', 'password') #1 {main} thrown in /home/rt88/rt88.php.xdomain.jp/public_html/sample/login-output.php on line 6
となります。

こちらのサーバーに上げる時は、どこに気をつけないといけないんでしょう?
回答する
解決済みにする
by .さん (4b9b203e)
投稿数:261回
(ベストアンサー:32回)
2020/08/13 06:28
同じようなプログラム(後述)を作ってテストしてみましたが、特に問題なくDBを開くことができました。
特段注意した点はありません。

PHP・MySQLサーバー:sv4.php.xdomain.ne.jp
MySQLサーバー:mysql1.php.xdomain.ne.jp
ドメイン:初期ドメイン(独自ドメイン使用せず)


チェックポイント:

XFREEのサーバー上でDBは作成済みですか?
MySQLサーバー名は正しいですか?
DB名は正しいですか?
DBのIDは正しいですか?
DBのパスワードは正しいですか?

DB名が間違っていたり、IDが間違っていたり、パスワードが間違っていたりすると、同様のエラーメッセージ(Access denied)が出ることを確認しました。


テスト用プログラム:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
</head>
<body>
<?php

ini_set('display_errors',1);

$pdo=new PDO('mysql:host=mysql1.php.xdomain.ne.jp;dbname=DBNAME','DB_USER_ID','DB_USER_PASSWD');

echo "Normally done.";
?>
</body>
</html>
この回答に返信する