php执行顺序

时间:2013-01-24 16:24:52

标签: php mysql

我只是开始使用php和mysql我一直在做VB这很简单,现在我很烦恼所有的PHP。我创建了一小段代码,它以root身份连接到mysql服务器并创建一个在文本字段中输入名称的数据库,但每当我加载页面时,我都会看到一条错误消息,然后我才有机会键入db name并点击按钮。 代码完成了这项工作,但却给出了一个令人困惑的错误信息。

  

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

附近使用正确的语法
<?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);
?>

我需要更改什么才能执行代码,直到我按下按钮?

5 个答案:

答案 0 :(得分:3)

检查变量是否存在。

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

答案 1 :(得分:0)

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

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

我想为你提几点:

  • 避免使用mysql_*个功能,现在已弃用,您应该至少使用mysqli
  • 您可能希望了解有关SQL注入的信息,因为您的代码很容易受到相同的攻击。<​​/ li>

答案 2 :(得分: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);
}
?>

答案 3 :(得分: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。

答案 4 :(得分: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连接的一个很好的例子是我留在这里的。