2017-08-20 108 views
0

我想從W3schools學習php,其中包括一個mysql部分。到目前爲止,我已經完成了關於w3school的教程的每一部分,除了打印來自數據庫表。對於一些非常奇怪的原因,當我運行我的代碼時,沒有任何顯示。請我怎麼才能得到這個工作,並且我的問題可能來自我使用MariaDB與Xampp而不是Mysql的事實,儘管他們說它實際上是相同的語法。 下面是代碼我怎樣才能讓mysql從數據庫表中打印行

<?php 
$servername = "localhost"; 
$username = "uhexos"; 
$password = "strongpassword"; 
$database = "fruitdb"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// Create database 
$sql = "CREATE DATABASE fruitDB"; 
if ($conn->query($sql) === TRUE) { 
    echo "Database created successfully"; 
} else { 
    echo "Error creating database: " . $conn->error; 
} 

$conn->close(); 
// Create connection 
$conn = mysqli_connect($servername, $username, $password,$database); 

// sql to create table 
$complexquery = "CREATE TABLE MyFruits (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
FruitType VARCHAR(30) NOT NULL, 
FruitTaste VARCHAR(30) NOT NULL, 
FruitQuantity INT NOT NULL, 
DatePurchased TIMESTAMP 
)"; 

if ($conn->query($complexquery) === TRUE) { 
    echo "Table Fruits created successfully<br> "; 
} else { 
    echo "Error creating table: " . $conn->error; 
} 
$entry = "INSERT INTO myfruits (fruittype,fruittaste,fruitquantity) VALUES ('orange','sweet','50'),('lemon','sour','10'),('banana','sweet','15')"; 

if ($conn->query($entry) === TRUE) { 
    echo "New records created successfully"; 
} else { 
    echo "Error: " . $conn->error; 
} 

    $sql = 'SELECT id, fruitname, fruittaste FROM myfruits'; 

    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { 
     echo "EMP ID :{$row['id']} <br> ". 
     "EMP NAME : {$row['fruitname']} <br> ". 
     "EMP SALARY : {$row['fruittaste']} <br> ". 
     "--------------------------------<br>"; 
    } 

    echo "Fetched data successfully\n"; 

    mysql_close($conn); 
?> 

這是輸出從我的所有回波得到。

Error creating database: Can't create database 'fruitdb'; database existsError creating table: Table 'myfruits' already existsNew records created successfully 

Database created successfullyTable Fruits created successfully 
New records created successfully 

回答

1

基於該錯誤消息,您成功地創建數據庫和表一次,現在每次運行該代碼時,因爲你不能重複使用名稱失敗。

你絕對不想讓代碼試圖擦除&每次都啓動新的數據庫。事實上,大多數情況下,我發現您甚至不會在常規代碼中創建數據庫,而是使用phpMyAdmin或其他管理頁面來執行此操作。但是在代碼中創建表格是正常的。兩種選擇:

1 - 僅在表格尚不存在時才創建表格。這非常安全。但是,如果你想用新結構重新開始一個表格,或者從頭開始總是空的,那麼這是行不通的。爲此,只需將CREATE TABLE更改爲CREATE TABLE IF NOT EXISTS

2 - 在創建表之前刪除表。每個CREATE TABLE命令之前,添加一個命令狀DELETE TABLE IF EXISTS MyFruits

+1

該死的,擊敗了我,我正要發佈這個相同的答案 –

+0

,沒有幫助我得到存儲在表中的項目。儘管存在這些醜陋的錯誤,記錄實際上也會被添加@manassehkatz – uhexos

+0

@uhexos - 更正記錄無論如何都存儲 - 這是預期的。你是說在運行結束時你沒有得到'無法獲取數據:'或'成功提取數據'嗎? – manassehkatz

0

記住數據庫名稱是區分大小寫的,所以它不會不管你是否創建一個DB名「fruitdb」或「fruitDb」都是same.That是你的原因正在出錯。當你執行任何文件時,你也不必創建一個新的數據庫。如果你已經創建了數據庫,那麼你只能建立連接。 讓我們逐行調試您的代碼。

8號線 -

// Create connection 
$conn = new mysqli($servername, $username, $password); 

在這裏,您創建與數據庫的連接,因爲您已經創建了一個數據庫。如果你檢查你的phpmyadmin,你會發現一個名爲「fruitdb」

線數據庫10 -

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

這裏您檢查是否你能夠與你的數據庫連接。如果沒有,它會拋出錯誤,你的腳本將停止。現在你的代碼成功運行到現在。

線15 -

// Create database 
$sql = "CREATE DATABASE fruitDB"; 

在這裏,你將再次創建具有相同名稱的數據庫和你的代碼停止工作,因爲你已經擁有了它。

0

錯誤來自於此行 $ sql ='SELECT id,fruitname,fruittaste FROM myfruits';

我不小心把fruitname而不是fruittype,這是什麼導致它失敗。所以對於任何其他有問題的人,我的建議是檢查你的變量名,如果你100%確定你的語法。感謝所有的幫助。

相關問題