我不怎么使用php/mysql,但我需要完成一个相对简单的任务:检查表是否存在,如果不存在则创建它。我甚至无法获得有用的错误消息,在数据库中也没有创建任何表格。我的语法显然有问题。
<?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
?>
mysql_*
函数已经不再受支持,它们已经正式弃用,不再维护,并将在未来被移除。为确保项目的功能性,您应该使用PDO或MySQLi更新您的代码。 - Kermit$table
用反引号括起来,因为表名包含连字符。很可能你想要进行数学运算WEIGH-IN_DATA
,这相当于WEIGH (减) IN_DATA)
。在你的文件开头(<?php
标签后面)添加错误报告:error_reporting(E_ALL); ini_set('display_errors', 1);
,你就会明白我的意思了。 - Funk Forty Ninerresult = mysql_query($mysql_connexn, $query);
中的顺序调换 - 在mysql_
中,连接参数应该写在最后;不像mysqli_
。 - Funk Forty Niner