几乎是自我解释但由于某种原因,它总是起作用而不是工作一次(当表不存在时)......
$mysqli = mysqli_connect('localhost','user','pass','databasename');
$create_table =
'CREATE TABLE IF NOT EXISTS student
(
`1` longtext NOT NULL,
`2` longtext NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;';
$create_tbl = $mysqli->query($create_table);
if ($create_table) {
echo "Table has created";
}
else {
echo "error!!";
}
即使表已经存在,它总是回显Table has created
!!!
为什么?
答案 0 :(得分:2)
如果表格存在与否,您必须先检查,因为 $ create_table 每次都会返回1。 所以在
之前运行SHOW TABLES LIKE 'student'
$mysqli = mysqli_connect('localhost','root','root','test');
$create_table =
'CREATE TABLE IF NOT EXISTS student
(
`1` longtext NOT NULL,
`2` longtext NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;';
if(mysqli_num_rows($mysqli->query("SHOW TABLES LIKE 'student'")) !=1) {
$create_tbl = $mysqli->query($create_table);
} else {
echo "error!!";
}
答案 1 :(得分:1)
之前我从未使用过MySQLi
API(始终使用PDO
),但它没有返回true,因为查询实际上是成功的?
我认为只有在您的连接失败或类似错误时才会返回false。
答案 2 :(得分:1)
您正在测试SQL语句是否存在,而不是结果。然而,您需要使用===
(不仅仅是==
或直接测试变量)严格测试语句的成功执行。从查询中删除IF NOT EXISTS
,然后像这样进行测试;
if ($create_tbl === true) {
echo "Table was created";
}
else {
echo "Error!!";
}
答案 3 :(得分:1)
我刚删除了IF NOT EXISTS
,它就像一个魅力!感谢@Mark Baker指出这一点! :)