前提
権限エラーかアクセスエラーと出てしまいます。
レンタルサーバー上で行っていて、データベースへの全ての権限を持っているわけではありません。
実現したいこと
できれば常用されるような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
を参考にかい書いていたのですが、権限についての記述がなく調べているのですが、権限を持っている人が与える方法ばかりで見つけられなかったため質問しました。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/29 03:24
2022/08/30 13:21