为什么我的if语句总是返回false

时间:2015-03-11 01:40:21

标签: php mysql

我有一个脚本来检查表是否存在,如果不存在,那么它会创建一个表。该表创建正常,数据正确进入。创建表并遇到脚本后,我再次使用测试。但是它总是返回true并运行create table脚本。任何人都可以解释原因。

<?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)
)";
}

2 个答案:

答案 0 :(得分:1)

您永远不会实际执行CREATE查询,至少不会在此代码段中执行。{p>这应该意味着您的SELECT查询始终在不存在的表上运行。

mysql_query($sql1);

此外,如果您要对SELECT所做的只是检查表格是否存在,请查看此答案以获得更清晰的方式:https://stackoverflow.com/a/1525801/4652136

答案 1 :(得分:0)

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';