0

我只是从 php 和 mysql 开始,我一直在做 VB,这非常简单,现在我与 php 的每一点都在挣扎。我制作了一小段代码,它以 root 身份连接到 mysql 服务器,并使用在文本字段中输入的名称创建了一个数据库,但是每当我加载页面时,我什至在有机会输入数据库名称并点击之前看到一条错误消息按钮。该代码完成了这项工作,但给出了令人困惑的错误消息。

注意:未定义的索引:第 53 行 C:\xampp\htdocs\dbcreation.php 中的 dbname 创建数据库时出错:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '' 行附近使用的正确语法

<?php
$databasename = $_POST['dbname'];
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
if (mysql_query("CREATE DATABASE $databasename",$con))
{
echo "Database created";
}
else
{
echo "Error creating database: " . mysql_error();
}
mysql_close($con);
?>

我需要更改什么以便在我按下按钮之前不会执行代码?

4

5 回答 5

3

检查变量是否存在。

if(!empty($_POST['dbname'])){
    // execute code
}
于 2013-01-24T16:26:01.760 回答
0

即使表单尚未提交,您的查询仍在运行。您首先需要检查表单是否已提交。例如:

if(!empty($_POST['dbname']))
{
    // Handle stuff here.
}

不过,我想为您说明几点:

  • 避免使用mysql_*函数,它们现在已被弃用,您应该至少使用mysqli它们。
  • 您可能想阅读有关 SQL 注入的信息,因为您的代码很容易受到同样的攻击。
于 2013-01-24T16:27:17.463 回答
0

您可以使用 isset() 函数检查变量是否已设置

<?php
if(isset($_POST['dbname']))
{
    $databasename = $_POST['dbname'];
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
    if (mysql_query("CREATE DATABASE $databasename",$con))
    {
        echo "Database created";
    }
    else
    {
        echo "Error creating database: " . mysql_error();
    }
    mysql_close($con);
}
?>
于 2013-01-24T16:27:47.030 回答
0

调试 MySQL 错误时,您可以在出现错误后查看查询:

...
}
if (mysql_query("CREATE DATABASE $databasename",$con)) {
...

变成

...
}
$query = "CREATE DATABASE $databasename";
$succes = mysql_query($query, $con) or die("Query: '".$query."' failed: ".mysql_error());
if ($succes) {
...

一些建议:使用mysqli而不是 mysql。

于 2013-01-24T16:32:52.257 回答
0

试试这个:

$host="";//Host name
$username="";//MYSQL username
$password="";//MYSQL password
$db_name="";//Database name

//connect to server and select database
try{
$conn = new PDO('mysql:host='.$host.';dbname='.$db_name.'',$username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);}
catch(PDOException $e){
echo 'ERROR: ' . $e->getMessage();}


//post vars
$dbname=$_POST['dbname']
if(empty($dbname))
{
die("you did not enter a database name")
}

$sql="CREATE DATABASE". $databasename."";
$result=$conn->query($sql);
if($result !=false){
echo "Data inserted!";
}
else{
die("Error inserting data");
}

将来,尝试使用 PDO 连接到您的 SQL 数据库,PDO 连接的一个很好的例子就是我在这里留下的那个。

于 2013-01-24T16:44:15.747 回答