>我有一个脚本可以检查表是否存在,如果不存在,则创建一个。表创建正常,数据正确输入。创建表并遇到脚本后,我再次使用测试。但是,它始终返回 true 并运行创建表脚本。谁能解释为什么。
<?php
include 'config.php';
$scriptot = ($_POST["ohyeah"]);
$scriptname = ($_POST["scriptname"]);
$y = 1;
$scriptnamed = "".$scriptname."equip";
$r= 1;
$scriptot = $scriptot + 1;
echo $scriptnamed;
$val = mysql_query("select 1 from specifics");
echo $val;
if($val !== FALSE)
{
echo 'its there';
}
else
{
echo 'No table Found';//always runs this even if exists
// sql to create table
$sql1 = "CREATE TABLE specifics (
ID int NOT NULL AUTO_INCREMENT,
equiplist varchar(255),
stage varchar(255),
PRIMARY KEY (ID)
)";
}
您从未实际执行过CREATE
查询,至少在此代码段中没有执行。这应该意味着您的SELECT
查询始终在不存在的表上运行。
mysql_query($sql1);
此外,如果您想对SELECT
所做的只是检查表是否存在,请查看此答案以获取更简洁的方法:https://stackoverflow.com/a/1525801/4652136
在 IF
语句中,查询返回 1
。那么$val=1
.因此,通过替换您的IF
陈述1!==FALSE
这绝对是正确的。因此,它将始终运行echo 'its there';
.
$val = mysql_query("select 1 from specifics");
echo $val;
if($val !== FALSE)
{
echo 'its there';
}
else
{
echo 'No table Found';
试试这个:
$val = mysql_query("SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = 'YOUR_DATABASE_NAME_HERE'
AND table_name = 'specifics';");
echo $val;
if($val == 1)
{
echo 'its there';
}
else
{
echo 'No table Found';