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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

1回答

1973閲覧

PHP:SQL CREATE文でSQLエラーコード1146

dgrayman1226

総合スコア2

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2021/02/09 12:38

前提・実現したいこと

テーブルの初期化
エラーの改善

CREATE文でcreateUserData()のみ以下のエラーコードが出てしまう

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

ERROR 1146 (42S02): Table 'book_log.userdata' doesn't exist

該当のソースコード

PHP

1<?php 2require_once __DIR__ . '/../lib/mysqli.php'; 3 4function dropTable($link, $table) 5{ 6 $sql = "DROP TABLE IF EXISTS {$table};"; 7 $result = mysqli_query($link, $sql); 8 9 if ($result) { 10 echo 'テーブルを削除しました' . PHP_EOL; 11 } else { 12 echo 'テーブルの削除に失敗しました' . PHP_EOL; 13 echo 'Error:' . mysqli_error($link) . PHP_EOL; 14 } 15} 16 17function createThreads($link) 18{ 19 20 $sql = <<<EOT 21 CREATE TABLE IF NOT EXISTS threads ( 22 id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, 23 title VARCHAR(255), 24 summary VARCHAR(255), 25 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 26 ) DEFAULT CHARACTER SET=utf8mb4; 27 EOT; 28 29 $result = mysqli_query($link, $sql); 30 31 if ($result) { 32 echo 'テーブルを作成しました' . PHP_EOL; 33 } else { 34 echo 'テーブルの削除に失敗しました' . PHP_EOL; 35 echo 'Error:' . mysqli_error($link) . PHP_EOL; 36 } 37} 38 39function createSubmission($link) 40{ 41 $sql = <<<EOT 42 CREATE TABLE IF NOT EXISTS submission ( 43 id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, 44 thread_id INTEGER, 45 name VARCHAR(64) NOT NULL, 46 comment VARCHAR(1000), 47 pass TEXT, 48 fname TEXT, 49 extension TEXT, 50 filepass TEXT, 51 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 52 ) DEFAULT CHARACTER SET=utf8mb4; 53 EOT; 54 55 $result = mysqli_query($link, $sql); 56 57 if ($result) { 58 echo 'テーブルを作成しました' . PHP_EOL; 59 } else { 60 echo 'テーブルの削除に失敗しました' . PHP_EOL; 61 echo 'Error:' . mysqli_error($link) . PHP_EOL; 62 } 63} 64 65function createUserData($link) 66{ 67 $sql = <<<EOT 68 CREATE TABLE IF NOT EXISTS userData ( 69 id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, 70 email VARCHAR(255), 71 password VARCHAR(255), 72 created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 73 ) DEFAULT CHARACTER SET=utf8mb4; 74 EOT; 75 76 $result = mysqli_query($link, $sql); 77 if ($result) { 78 echo 'テーブルを作成しました' . PHP_EOL; 79 } else { 80 echo 'テーブルの作成に失敗しました' . PHP_EOL; 81 echo 'Error:' . mysqli_error($link) . PHP_EOL; 82 } 83} 84 85$table1 = 'threads'; 86$table2 = 'submission'; 87$table3 = 'userData'; 88 89$link = dbConnect(); 90dropTable($link, $table1); 91dropTable($link, $table2); 92dropTable($link, $table3); 93createThreads($link); 94createSubmission($link); 95createUserData($link); 96

ターミナルでの結果

テーブルを削除しました テーブルを削除しました テーブルを削除しました テーブルを作成しました テーブルを作成しました テーブルの作成に失敗しました Error:Table 'book_log.userdata' doesn't exist

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

php:7.4 Macbook2020 Intel i5

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

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

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

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

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

guest

回答1

0

ベストアンサー

Errorをみると、テーブル名userdataとすべて小文字ですが、
SQLでは一部大文字のuserDataとなっています。
デフォルトでは大文字テーブル名は認識しないのでは・・

しかし、Droptableは成功しているようなので、
不思議ですが

投稿2021/02/09 12:59

casaganai

総合スコア144

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

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

dgrayman1226

2021/02/09 13:09

試しに$table3とcreateUserData()内のテーブル名を小文字だけにしたらエラー出ませんでした。 これからはテーブル名は小文字だけにしようと思います。。。 DROPだけ成功したのは謎ですけど
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問