【问题标题】:PHP and MySQLi check to see if the table exists and if it doesn't create itPHP 和 MySQLi 检查表是否存在以及是否不创建它
【发布时间】:2015-04-29 15:26:51
【问题描述】:

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

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') 或其他位是错误的和/还是不工作?我不知道是哪一点或为什么?

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    只用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

    附:相关笑话:http://www.bash.org/?725783

    【讨论】:

    • 仍然得到相同的结果,所以也许 $result = mysqli_query($sql);不工作?
    • @Quickcoins,请检查mysqli_query签名。
    • 我如何检查 mysqli_query 签名,以前从未听说过?
    • 好的,我已经完成了 $result = mysqli_query($link, $sql);我仍然得到相同的结果,这是否涵盖了参数?仍然遇到同样的问题
    • @Quickcoins,您需要将链接传递给mysqli_error
    【解决方案2】:

    嘿,你是怎么做到的:

    创建一个 mysqli php 连接:

    <?php
    $__DATABASE__='centralfeed_feed';
    $__USER__='root';
    $__PASSWORD__='';
    $__HOST__='localhost';
    
    $con=mysqli_connect($__HOST__,$__USER__,$__PASSWORD__,$__DATABASE__);
    
    ?>
    

    然后向数据库发出 mysqli 请求:

    <?php
    
         if(mysqli_query($con,"DESCRIBE  users ")){
            echo "exists";
        }else{
            echo "dont exists";
        }
        mysqli_close($con);
        exit;
     ?>
    

    那么你就完成了!

    请记住在使用完它们后关闭连接,或者注意使用它们的连接不仅在 php mysqli 中,而且在所有时间(在其他语言中也是如此)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 2017-11-09
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多