PHP和MySQLi检查表是否存在以及是否不创建表

时间:2015-02-27 01:54:26

标签: php mysqli

尝试使用它来检查表格是否存在以及是否创建表格

if ( !f_tableExists($table, DB_NAME) ) {
    $sql = "CREATE TABLE $table (
        ID int NOT NULL AUTO_INCREMENT,
        PRIMARY KEY(ID),
        timestamp int NOT NULL,
        ip int NOT NULL
    )";

    $result = mysqli_query($sql);

    if (!$result) {
        die('Invalid query: ' . mysqli_error());
    }

}

其中f_tableExists执行以下操作以检查它是否存在。

function f_tableExists($tablename, $database = false) {

if(!$database) {
    $res = mysqli_query("SELECT DATABASE()");
    $database = mysqli_data_seek($res, 0);
}

$res = mysqli_query("
    SELECT COUNT(*) AS count
    FROM information_schema.tables
    WHERE table_schema = '$database'
    AND table_name = '$tablename'   
");

return mysqli_data_seek($res, 0) == 1;
}

获得结果'无效的查询:'

没有制作表格,因此我假设我的一些mysqli查询代码(CREATE TABLE .... ip int NOT NULL)或(SELECT COUNT ... =' $ tablename')或其他有点错误和/或不工作?我不知道哪一点或为什么?

2 个答案:

答案 0 :(得分:4)

只需使用IF NOT EXISTS查询而不检查

http://dev.mysql.com/doc/refman/5.5/en/create-table.html

  $sql = "CREATE TABLE IF NOT EXISTS $table (
        ID int NOT NULL AUTO_INCREMENT,
        PRIMARY KEY(ID),
        timestamp int NOT NULL,
        ip int NOT NULL
    )";

另外,需要将连接传递到mysqli_query

P.S。相对的笑话:http://www.bash.org/?725783

答案 1 :(得分:0)

嘿,你可以这样做:

创建一个mysqli php连接:

lib/

然后将mysqli请求发送到数据库:

<?php
$__DATABASE__='centralfeed_feed';
$__USER__='root';
$__PASSWORD__='';
$__HOST__='localhost';

$con=mysqli_connect($__HOST__,$__USER__,$__PASSWORD__,$__DATABASE__);

?>

然后你完成了!!

永远记得在完成使用它们时关闭连接,或者注意不仅在php mysqli中使用它们连接,而且一直使用它们(在其他语言中)。