2017-08-20 68 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%确定你的语法。感谢所有的帮助。

相关问题