2013-01-24 52 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連接的一個很好的例子是一個我已經離開了這裏。