<?php
$login = 'root';
$password = 'root';
$dsn = "mysql:host=localhost";
$dbb = 'account';
$opt = array(
// any occurring errors wil be thrown as PDOException
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// an SQL command to execute when connecting
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
);
// Making a new PDO conenction.
$conn = new PDO($dsn, $login, $password,$opt);
$db = $conn->prepare( "CREATE SCHEMA IF NOT EXISTS `?` ");
$db->bindParam(1, $dbb);
$db->execute();
?>
它工作正常但是它创建了一个名为'account'且带单引号的数据库,是否有人知道如何删除单引号。我尝试了很多东西,但它没有删除。
答案 0 :(得分:1)
这是有效的:
<?php
$login = 'root';
$password = 'root';
$dsn = "mysql:host=localhost";
$dbb = 'account';
$opt = array(
// any occurring errors wil be thrown as PDOException
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// an SQL command to execute when connecting
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
);
// Making a new PDO conenction.
$conn = new PDO($dsn, $login, $password,$opt);
$db = $conn->prepare( "CREATE SCHEMA IF NOT EXISTS $dbb ");
$db->execute();
?>
我猜你无法使用bindParam准备数据库
答案 1 :(得分:1)
根据http://www.php.net/manual/en/book.pdo.php,您应该将表格,列和数据库名称列入白名单。
尝试;
$db = $conn->prepare( "CREATE SCHEMA IF NOT EXISTS " . $dbb);
$db->execute();