我目前正在使用以下工作,但每次创建表时都会抛出一个错误(因为它首先尝试插入不存在的db并返回false).
$result = $dbh->prepare("INSERT INTO `". $host ."` (URL) VALUES ('$href')");
if( ! $result->execute() ){
$result = $dbh->prepare("CREATE TABLE `" . $host . "` ( `ID` INT( 255 ) NOT NULL AUTO_INCREMENT , `URL` VARCHAR( 255 ) NOT NULL , PRIMARY KEY ( `ID` )) ENGINE = MYISAM ;");
$result->execute();
print "Host added: " . $host . "\n";
}
Run Code Online (Sandbox Code Playgroud)
有人能让我知道一种更有效的方法来完成这项任务吗?
编辑 - 绑定
$result = $dbh->prepare("CREATE TABLE `?` If NOT EXISTS ( `ID` INT( 255 ) NOT NULL AUTO_INCREMENT , `URL` VARCHAR( 255 ) NOT NULL , PRIMARY KEY ( `ID` )) ENGINE = MYISAM ;");
$result->execute($host);
$result = $dbh->prepare("INSERT INTO `?` (URL) VALUES ('?')");
$result->execute($host, $href);
print "Host added: " . $host . "\n";
Run Code Online (Sandbox Code Playgroud)
它是否正确?
CREATE TABLE Foo if NOT EXISTS <schema>
Run Code Online (Sandbox Code Playgroud)
另外,请在INSERT操作中使用占位符和绑定值,以免被称为Little Bobby Tables.