2013-01-24 177 views
0

我只是开始使用PHP和MySQL我一直在做VB非常简单,现在我挣扎着每一点的PHP。我做了一小段与MySQL服务器相连的代码,并创建了一个数据库,并在文本字段中输入了名称,但是每当我加载页面时,我都会看到一条错误消息,甚至没有机会键入数据库名称并点击按钮。代码完成这项工作,但给出了一个令人困惑的错误消息。PHP执行顺序

Notice: Undefined index: dbname in C:\xampp\htdocs\dbcreation.php on line 53 Error creating database: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' 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); 
?> 

什么,我需要改变,因此代码不被执行,直到我按下按钮?

+3

@JonahBishop关于PHP + MySQL的每一个问题都有这个评论。我现在正式生病了。 –

+1

@Cobra_Fast这是人们学习的唯一方式!只要2004年的PHP教程介绍Web人们将继续使用已弃用的函数。 – GordonM

+0

他们不会去除文档页面,因为有些人仍然会使用PHP <5.5。 –

回答

3

检查变量是否存在。

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

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

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

我想提出几点了你,虽然:

  • 避免使用mysql_*功能,他们现在过时,你应该使用mysqli为最小。
  • 您可能想要了解有关SQL注入的信息,因为您的代码非常容易受到攻击。
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); 
} 
?> 
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。

+0

问题不在于他的查询... – BenM

+0

我没有很好地阅读这个问题。我的错。 – harianus

+0

工作完成;)谢谢! 这是我第一天在修改php/html/css代码,所以我甚至不知道mysql mysqli – corkalom

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连接的一个很好的例子是一个我已经离开了这里。