【问题标题】:PHP check to see if MySQL table exists [duplicate]PHP检查MySQL表是否存在[重复]
【发布时间】:2015-09-11 20:27:13
【问题描述】:

我正在尝试查看一个表是否已经存在,然后采取相应的行动。我无法通过查看以前的帖子来解决我的问题。我知道 sql 抛出错误但我不知道它为什么抛出的次要问题。当我用实际字符串替换 $thisTable 时,它​​可以工作。但我的主要问题是无法检测表是否存在。

$thisTable = "testX";
$thisTable = preg_replace("/[^A-Z,a-z,0-9]/", '', $thisTable);
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SHOW TABLES LIKE ".$thisTable;
    //I get an SQL error here?
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $isThere = $stmt->num_rows;
    if ($isThere > 0){
        echo "Already exists."
    } else {
        echo "Doesn't exist."
    }
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage() . "<br/>WITH QUERY: " . $sql;
}

【问题讨论】:

  • 是的,我看到了,等等。但是不是所有的 mysql_ 都被弃用了吗?只是在学习这些东西时寻求一点帮助。
  • 它已被弃用,但 mysqli_ 函数应该可以正常工作。该问题也有基于 PDO 的解决方案。
  • 提示:如何在 MySQL 中处理字符串?在这个where like... 查询中,表名只是一个字符串。
  • 骗我。我在那个帖子里找到了。谢谢大家。

标签: php mysql


【解决方案1】:

您需要在查询中为表名加上引号。

$sql = "SHOW TABLES LIKE '$thisTable'";

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 2012-02-18
    • 2013-08-06
    • 1970-01-01
    • 2011-02-25
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多