Я не очень много разбираюсь в php / mysql, но мне нужно то, что, по моему мнению, было бы относительно простой задачей: проверить, существует ли таблица, и создать ее, если это не так. Я даже не могу получить полезное сообщение об ошибке, и в db не создается таблица. В моем синтаксисе явно что-то не так.
<?php session_start(); error_reporting(E_ALL); ini_set('display_errors', 1); // 1. CONNECT TO THE DB SERVER, confirm connection mysql_connect("localhost", "root", "") or die(mysql_error()); echo "<p>Connected to MySQL</p>"; $mysql_connexn = mysql_connect("localhost", "root", ""); // redundant ? // 2. CONNECT TO THE SPECIFIED DB, confirm connection $db = "weighttracker"; mysql_select_db($db) or die(mysql_error()); echo "<p>Connected to Database '$db'</p>"; $db_connexn = mysql_select_db($db)or die(mysql_error("can\'t connect to $db")); // 3. if table doesn't exist, create it $table = "WEIGHIN_DATA"; $query = "SELECT ID FROM " . $table; //$result = mysql_query($mysql_connexn, $query); $result = mysql_query($query, $mysql_connexn); if(empty($result)) { echo "<p>" . $table . " table does not exist</p>"; $query = "CREATE TABLE IF NOT EXISTS WEIGHIN_DATA ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), DATE DATE NOT NULL, VALUE SMALLINT(4) UNSIGNED NOT NULL )" } else { echo "<p>" . $table . "table exists</p>"; } // else ?>
Несколько вещей.
Отсутствовала полуточка ;
в и в конце )"
if(empty($result)) { echo "<p>" . $table . " table does not exist</p>"; $query = "CREATE TABLE IF NOT EXISTS WEIGHIN_DATA ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), DATE DATE NOT NULL, VALUE SMALLINT(4) UNSIGNED NOT NULL )" // <--- right there
который вызвал бы / вызвал ошибку синтаксического анализа, например:
Ошибка анализа: синтаксическая ошибка, неожиданный «}» в …
Среди других ошибок, как показано в моих комментариях из вашего первоначально опубликованного кода.
Кроме того, вы не использовали mysql_query
в создании таблицы.
Вот метод mysqli_
, где я прокомментировал ваши исходные коды.
Sidenote: вы используете ID
для своего столбца в $query = "SELECT ID FROM " . $table;
$query = "SELECT ID FROM " . $table;
и все же вы создаете таблицу и столбец как id
в нижнем регистре; оба символа должны совпадать.
<?php session_start(); error_reporting(E_ALL); ini_set('display_errors', 1); $DB_HOST = "xxx"; // put your own data $DB_NAME = "xxx"; // put your own data $DB_USER = "xxx"; // put your own data $DB_PASS = "xxx"; // put your own data $conn = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); if($conn->connect_errno > 0) { die('Connection failed [' . $conn->connect_error . ']'); } /* // 1. CONNECT TO THE DB SERVER, confirm connection mysql_connect("localhost", "root", "") or die(mysql_error()); echo "<p>Connected to MySQL</p>"; $mysql_connexn = mysql_connect("localhost", "root", ""); // redundant ? // 2. CONNECT TO THE SPECIFIED DB, confirm connection $db = "weighttracker"; mysql_select_db($db) or die(mysql_error()); echo "<p>Connected to Database '$db'</p>"; $db_connexn = mysql_select_db($db)or die(mysql_error("can\'t connect to $db")); // 3. if table doesn't exist, create it $table = "WEIGHIN_DATA"; $query = "SELECT ID FROM " . $table; // that should be id and not ID //$result = mysql_query($mysql_connexn, $query); $result = mysql_query($query, $mysql_connexn); */ $table = "WEIGHIN_DATA"; $query = "SELECT ID FROM " . $table; // that should be id and not ID //$result = mysql_query($mysql_connexn, $query); // your original code // however connection comes last in mysql method, unlike mysqli $result = mysqli_query($conn,$query); if(empty($result)) { echo "<p>" . $table . " table does not exist</p>"; $query = mysqli_query($conn,"CREATE TABLE IF NOT EXISTS WEIGHIN_DATA ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), DATE DATE NOT NULL, VALUE SMALLINT(4) UNSIGNED NOT NULL )"); } else { echo "<p>" . $table . "table exists</p>"; } // else ?>
CREATE TABLE IF NOT EXISTS WEIGH-IN_DATA ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), DATE DATE NOT NULL, VALUE SMALLINT(4) UNSIGNED NOT NULL )