SQL中的控制流问题

时间:2014-07-15 05:20:47

标签: php mysql sql pdo

在php脚本中,有一个名为$partners_location的变量。

在SQL中有一个名为plocation的列。

我想要做的是首先检查plocation列中是否有与$partners_location的值匹配的值。

如果它匹配,那么我想继续从PHP脚本本身创建一个新表。

对于这种情况,我知道我们需要的是如果不是,但我不知道如何在这里使用它

这就是我一直在尝试的方式,就像我使用PDO一样。

$dsn= "mysql:dbname=mydatabase";
$name= "root";
$password="****";
$conn = new PDO ($dsn, $name, $password);

...

if($CON = $conn->prepare("SELECT FROM CIDB WHERE plocation='$partners_location'");
    $CON->execute();)
{
 $tbl=$conn->prepare("CREATE TABLE chat (id INT NOT NULL);
}
else
{
$tbl=$conn->prepare("CREATE TABLE xyz (id INT NOT NULL);
}

我认为这些 if else语句不会起作用。

有人可以建议一些有用的东西吗?

2 个答案:

答案 0 :(得分:0)

即使查询成功但返回零行,

$CON->execute()也会返回true 使用COUNT()检查行是否存在 像这样:

$CON = $conn->prepare("SELECT COUNT(*) as cnt FROM CIDB WHERE plocation = '$partners_location'");
$CON->execute();
$row  = $CON-> fetch();
if($row[0] != '0' )
    $tbl=$conn->prepare("CREATE TABLE chat (id INT NOT NULL)");
else
    $tbl=$conn->prepare("CREATE TABLE xyz (id INT NOT NULL)");

答案 1 :(得分:0)

试试这个:

$CON = $conn->prepare("SELECT COUNT(*) as cnt FROM CIDB WHERE plocation = '$partners_location'");
$CON->execute();
$row  = $CON-> fetch();
if($row[0] != '0' )
{
    $tbl=$conn->prepare("CREATE TABLE chat (id INT NOT NULL)");
}
else
{
    $tbl=$conn->prepare("CREATE TABLE xyz (id INT NOT NULL)");
}

您错过了")