仅当数据库创建为php pdo时,才运行一次insert查询
从config.php仅当数据库创建为php pdo时,才运行一次insert查询,php,database,pdo,insert,Php,Database,Pdo,Insert,从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)
<?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) {
}
?>
这是我使用注册按钮注册用户时新用户的功能。
如何使这种函数在创建数据库时只运行一次,并且只运行一次。
我需要为每个输入输入定义值,但我还没有更改它
更新
当我重新加载index.php时,我使用的代码在我的问题之上仍然是相同的。查询再次运行,进行双输入。我想要的是,当创建数据库时,查询将运行,而当加载数据库时,不会再次创建数据库,因此我希望查询不会再次运行,以避免重复输入
$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();
}
我还有一个问题,为什么有时计数的回声是3,有时是33,就像查询运行了两次请清除这个…这是可行的,但可能这里有不正确的逻辑,请随意编辑以使其完美。“只运行一次意味着在创建数据库时运行它”-我没有看到数据库“创建”代码。这是数据库创建代码
CREATE database db_name
编辑代码sir@Fred ii-你说的没错这只是一个将新用户插入数据库的功能。通过“仅运行一次”,我假设您的意思是不创建重复项。在查询之前,请检查该用户是否已存在于数据库中,如果未创建,则不创建。请重新定义您的问题。