MySQLi如何检查表是否存在?

时间:2016-06-24 11:57:02

标签: php mysqli

我想按应用创建表格,如果没有这样的表格。但是第一次这样做......需要一些帮助,那么

 //connecting...
$mysqli = new mysqli($db_params['host'], $db_params['login'],   $db_params['pass'], $db_params['name']);

if ($mysqli->query("SHOW TABLES LIKE `products`")){
echo ' YES';
} else echo 'no'; 

总是说NO。

4 个答案:

答案 0 :(得分:5)

阅读他们的文档? https://dev.mysql.com/doc/refman/5.5/en/replication-features-create-if-not-exists.html似乎你可以轻松地做到这一点:

CREATE TABLE IF NOT EXISTS `products`

这样您就不必先检查表是否存在,如果不存在则只创建一个表。

似乎你有一个语法错误,这可能是你的代码一直返回“否”的原因。这应该有效:

SHOW TABLES LIKE 'products';

只需使用单引号或双引号,不需要`等反引号。

您对表格和列名称使用反引号(`),对于字符串使用单引号(')或双引号("),在这种情况下,您将给出一个字符串,以便您应该使用单引号或双引号。

答案 1 :(得分:1)

如果表格不存在,您可以使用

CREATE TABLE IF NOT EXISTS

答案 2 :(得分:1)

使用PHP DESCRIBE 语句。

if(mysql_query("DESCRIBE `table_name`")) {
    // Exists
}

答案 3 :(得分:-1)

此解决方案适用于我JUST FINE:

<?php
// connect to the "tests" database
$conn = new mysqli('localhost', 'root', 'pass', 'tests');

// check connection
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}

// SQL query
$sql = "SHOW TABLES IN `tests`";

// perform the query and store the result
$result = $conn->query($sql);

// if the $result not False, and contains at least one row
if($result !== false) {
  // if at least one table in result
  if($result->num_rows > 0) {
    // traverse the $result and output the name of the table(s)
    while($row = $result->fetch_assoc()) {
      echo '<br />'. $row['Tables_in_tests'];
    }
  }
  else echo 'There is no table in "tests"';
}
else echo 'Unable to check the "tests", error - '. $conn->error;

$conn->close();
?>

有关完整和更多示例,请参阅源代码:http://coursesweb.net/php-mysql/check-table-exists-database_t