【问题标题】:run insert query once only when the database is created php pdo仅在创建数据库时运行一次插入查询 php pdo
【发布时间】:2014-09-18 03:25:20
【问题描述】:

来自 config.php

<?php 
global $dbh;
$dbname = 'memberdb';


try {
        $dbh = new PDO("mysql:host=localhost", "root", "");
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbname = "`".str_replace("`","``",$dbname)."`";
        $dbh->query("CREATE DATABASE IF NOT EXISTS $dbname");
        $dbh->query("use $dbname"); 
    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $sql ="CREATE TABLE IF NOT EXISTS $member ( 
        mem_id int(40) NOT NULL AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(40) NOT NULL, 
        password VARCHAR(40) NOT NULL);" ;
        $dbh->exec($sql); 
$stmt = $dbh->prepare("INSERT INTO member (username, password) VALUES (?,?)")or die($db->errorInfo());
    $stmt->bindValue(1,"admin1",PDO::PARAM_STR);
    $stmt->bindValue(2,"password1",PDO::PARAM_STR);
    $stmt->execute();
    $stmt->bindValue(1,"admin2",PDO::PARAM_STR);
    $stmt->bindValue(2,"password2",PDO::PARAM_STR);
    $stmt->execute();
    $stmt->bindValue(1,"admin3",PDO::PARAM_STR);
    $stmt->bindValue(2,"password3",PDO::PARAM_STR);
    $stmt->execute();
} catch(PDOException $e) {

}
?>

这是我使用注册按钮注册用户时的新用户功能。 如何使这种功能只运行一个,当数据库创建时并且只运行。 我需要为每个输入设置定义的值,但我还没有更改它

UPDATE

当我重新加载 index.php 时,我使用的代码在我的概率之上仍然是相同的,查询再次运行,进行双重输入。我想要的是,当创建数据库时,查询将运行,当加载数据库时没有再次创建,所以我希望查询不再运行以避免重复输入。

【问题讨论】:

  • “只运行一次意味着在创建数据库时运行它” - 我没有看到数据库“创建”代码。这是数据库创建代码CREATE DATABASE db_name
  • 编辑代码先生@Fred-ii-你说得对
  • 这只是一个将新用户插入数据库的函数。通过“仅运行一次”,我假设您的意思是不创建重复项。在查询之前检查用户是否已经存在于数据库中,如果不创建,则不创建。
  • 请重新定义您的问题。

标签: php database pdo insert


【解决方案1】:
$stmt = $dbh->prepare("SELECT * FROM member") ;
    $stmt->execute();
    $count = $stmt -> rowCount();
    echo $count;
    if( $count == 00 ){
        $stmt = $dbh->prepare("INSERT INTO member (username, password) VALUES (?,?)")or die($db->errorInfo());
        $stmt->bindValue(1,"admin1",PDO::PARAM_STR);
        $stmt->bindValue(2,"password1",PDO::PARAM_STR);
        $stmt->execute();
        $stmt->bindValue(1,"admin2",PDO::PARAM_STR);
        $stmt->bindValue(2,"password2",PDO::PARAM_STR);
        $stmt->execute();
        $stmt->bindValue(1,"admin3",PDO::PARAM_STR);
        $stmt->bindValue(2,"password3",PDO::PARAM_STR);
        $stmt->execute();
    }

我只有一个问题,为什么有时 count 的回声是 3,有时它的 33 就像查询运行了两次一样,请清除它...这可行,但也许这里可能存在不正确的逻辑,请感觉免费编辑以使其完美。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2013-09-03
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多