如何让mysql从数据库表中打印行

时间:2017-08-20 03:22:29

标签: php mysqli xampp

我正在尝试从W3schools学习php,其中包括一个mysql部分。到目前为止,我已经完成了w3school教程的其他部分,除了从数据库表打印内容的部分。出于一些非常奇怪的原因,我运行代码时没有显示任何内容。请问我怎么能让这个工作起来,我的问题可能来自于我使用带有Xampp而不是Mysql的MariaDB,尽管他们说它实际上是相同的语法。 这是代码

<?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

3 个答案:

答案 0 :(得分:1)

根据错误消息,您设法创建数据库和表一次,现在每次运行代码时都会失败,因为您无法重用这些名称。

你绝对不想让代码试图擦除&amp;每次都在数据库上重新开始。事实上,我经常发现你甚至不在常规代码中创建数据库,而是使用phpMyAdmin或其他一些管理页面来做到这一点。但是在代码中创建表是正常的。两个选项:

1 - 仅在表尚不存在时创建表。这非常安全。但是,如果你想用新结构重新开始一个表,或者从它开始一直空着,那就不行了。为此,只需将CREATE TABLE更改为CREATE TABLE IF NOT EXISTS

即可

2 - 在创建表之前删除表。在每个CREATE TABLE命令之前,添加DELETE TABLE IF EXISTS MyFruits

之类的命令

答案 1 :(得分:0)

记住数据库名称不区分大小写,因此创建数据库名称“fruitdb”或“fruitDb”是否相同并不重要。这就是您收到错误的原因。此外,您不必在执行任何文件时创建新数据库。如果您已经创建了数据库,那么您只能与它建立连接。 让我们逐行调试你的代码。

第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";

在这里,您将再次创建一个具有相同名称的数据库,并且您的代码将停止工作。

答案 2 :(得分:0)

错误来自这条线 $ sql ='SELECT id,fruitname,fruittaste FROM myfruits';

我不小心放了fruitname而不是fruittype,这就是导致它失败的原因。所以对于有这个问题的其他人,我的建议是检查你的变量名称,如果你100%确定你的语法。谢谢你的帮助。