【问题标题】:Control Flow issue in SQLSQL中的控制流问题
【发布时间】:2014-07-15 05:20:46
【问题描述】:

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

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

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

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

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

这是我一直在尝试的,顺便说一下我使用 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 语句会起作用。

有人可以给我推荐一些可行的方法吗?

【问题讨论】:

  • i don't think that these if else statements are going to work.你必须测试它是否可以工作
  • 我知道它不会起作用,....它不满足if else语句的要求。
  • 我想你错过了)"...

标签: php mysql sql pdo


【解决方案1】:

$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)");

【讨论】:

    【解决方案2】:

    试试这个:

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

    你错过了")

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      相关资源
      最近更新 更多