【发布时间】: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...查询中,表名只是一个字符串。 -
骗我。我在那个帖子里找到了。谢谢大家。