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

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

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

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

PHP

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

Q&A

解決済

1回答

397閲覧

データベースにデータの保存の仕方

aoihello

総合スコア31

MySQL

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

PHP

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

0グッド

1クリップ

投稿2022/08/27 13:11

編集2022/08/28 06:22

前提

権限エラーかアクセスエラーと出てしまいます。
レンタルサーバー上で行っていて、データベースへの全ての権限を持っているわけではありません。

実現したいこと

できれば常用されるようなPDO方式で記述したいです。

発生している問題・エラーメッセージ

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1142 INSERT command denied to user --------- for table 'jp'

該当のソースコード

php

1エラーで示された部分はこのコードの16行目のprepareの部分です。 2<?php 3/*データベースにプロフィールを新規登録するプログラムinsert*/ 4 5session_save_path("/../tmp/"); 6session_start(); /*前のページからのデータを持ってくる。*/ 7$name = $_SESSION['name']; 8$nickname = $_SESSION['nickname']; 9$password = $_SESSION['password']; 10$comment = $_SESSION['comment']; 11 12/*require_onceなどを使うときは飛ばした先でexitなどが起きないようにする。*/ 13require_once(__DIR__."/../config/config.php"); /*データベース接続用のファイルを読み込む*/ 14echo 'こんにちは'; 15 $sql = "INSERT INTO ------------(name, nickname, password, comment) 16 VALUES( ?, ?, ?, ?)"; 17 $stmt = $db -> prepare($sql); 18 $stmt->bind_param('ssss', $name, $nickname, $password, $comment);/*ssssは後ろの変数がどのような値なのかを定義している。sは文字列、iは整数*/ 19 $stmt->execute(); /*上のprepareの中(の$sql)を実行するという意味。*/ 20 /*header関数は単体の関数としては無理なので何か関数の中に入れる。 headerの前に画面出力があると上手くいかないので消す。*/ 21 22 /*処理が終わったら飛ぶページ*/ 23 header('location:https://---------'); 24 echo 'こんにちは2'; 25 exit(); 26 27?>

php

1データベース接続に用いているファイルのコードです。 2<?php 3/*データベース保存プログラム(config)*/ 4 5/*データベースに接続する*/ 6 $db = new PDO('mysql:host=-----------------------------', 7 array( PDO::ATTR_EMULATE_PREPARES => false, 8 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) 9 ); 10 if(!$db) { 11 die("Connection failed: " . mysql_connect_error()); 12 } 13 14?>

試したこと

レンタルサーバー上で、行っているため権限を与えてもらっていない箇所があるため、権限について問い合わせたところ、データベースへはサーバー経由でアクセスして欲しいとのことでした。
https://www.php.net/manual/ja/index.php
をさんこう

補足情報(FW/ツールのバージョンなど)

レンタルサーバー上で作っていてその管理会社ではmysqliの記述方法が紹介されていたのですが、常用ではないということでPDOとvindparamの方法に変えました。
mysqliでは権限エラーは出ていませんでした。
大学でc言語をかじった程度で、phpに関しては独学で勉強していて、ほとんど分かっていません。
websiteに関する部分は----で隠しています。
https://www.php.net/manual/ja/index.php
を参考にかい書いていたのですが、権限についての記述がなく調べているのですが、権限を持っている人が与える方法ばかりで見つけられなかったため質問しました。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

mysqli で権限エラーにならないと言うことであれば、mysqli のときとユーザー・パスワード・接続先サーバが異なるなどの原因が考えられます。
まずはそこをきちんとしましょう。

投稿2022/08/29 00:39

tacsheaven

総合スコア13703

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

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

aoihello

2022/08/29 03:24

ご回答誠にありがとうございます。 ファイルマネージャー上にある、wp-config.phpでデータベース情報を確認の上、記述しています。 $db = new PDO('mysql:host=$hostname; dbname=$name; charset=utf8', '$username', '$dbpassword', というように入力しているのですが、PDOの入力方式で間違っている箇所があるのでしょうか。 あれから色々調べてはいるのですが、同じような記述方式しかなくいまだによく分かりません。 $の部分はwp-config.phpの情報を入力しています。 よろしくお願いいたします。
aoihello

2022/08/30 13:21

サーバー管理会社に調査依頼をしたところ、特に何も報告がなかったものの、データベースへの接続はうまくいくようになりました。 誠にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問