一回も披露したことのない豆知識

下記のプログラムを実行すると

Failed to create (table14_2)!

というエラーメッセージが出てしまい、テーブルを作ることができません。

どこが間違っていますか?


<?php

$hostname = *****
$username = *****
$password = ******

$dbname = 'testdb100';

$tablename = 'table14_2';


$create_query = "CREATE TABLE $tablename (Id INT NOT NULL AUTO_INCREMENT, ".
"UserName VARCHAR(20), ".
"Email_address VARCHAR(50), ".
"Phone_number INT ".
"Contents VARCHAR(500) ".
"PRIMARY KEY(Id)) CHARACTER SET utf8";

$result;


function is_table_exists()
{
global $link, $tablename, $create_query, $result;


$result = mysqli_query($link, "SHOW TABLES LIKE '" . $tablename . "'");
$table_exists = $result->num_rows ? true : false;


if (!$table_exists) {
$result = mysqli_query($link, $create_query);
if (!$result) {
exit("Failed to create ($tablename)!");
}

}

return $table_exists;
}

function show_table()
{
global $link, $tablename, $result;

$result = mysqli_query($link, "SELECT * FROM $tablename");
if (!$result) {
exit("Failed to show ($tablename)!");
}

while ($row_assoc = mysqli_fetch_assoc($result)) {
echo "<hr>";

echo "{$row_assoc['Id']}. " .
"{$row_assoc['UserName']} " .
"<br>";

echo "{$row_assoc['Contents']}";
}
echo "<hr>";
}

echo <<< EOT
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>14-1</title>
</head>
<body>

<h1> お問い合わせフォーム </h1>
EOT;

$link = mysqli_connect($hostname, $username, $password, $dbname);
if (! $link) exit("Connect error!");

is_table_exists();

show_table();

mysqli_free_result($result);
mysqli_close($link);

echo <<< EOT
<form method="post" action="14_2.php">
<button type="submit" name="transition" value="new_post">お問い合わせ</button>
</form>
</body>
</html>
EOT;

?>

A 回答 (2件)

CREATE TABLE文の文字列で、2箇所、最後のカンマが抜けています



Phone_number INT,
Contents VARCHAR(500),
    • good
    • 0

$create_query の内容が文法誤りを起こしてるみたいです。


https://www.bing.com/search?q=mysql+syntax+checker で見つかったところでチェックしてみた例。
「php テーブルを作れない」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報