PHP 执行顺序


Order of php execution

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

注意:未定义的索引:C:''xampp''htdocs''dbcreation.php 第 53 行中的 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);
?>

我需要更改什么才能在按下按钮之前不执行代码?

检查变量是否存在。

if(!empty($_POST['dbname'])){
    // execute code
}

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

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

不过,我想为您提出几点:

  • 避免使用mysql_*函数,它们现在已弃用,您应该至少使用 mysqli
  • 您可能想阅读有关SQL注入的信息,因为您的代码非常容易受到SQL注入的影响。

你可以通过使用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);
}
?>

调试 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。

试试这个:

$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连接的一个很好的例子是我留在这里的那个。