【问题标题】:How can I get mysql to print rows from a database table如何让mysql从数据库表中打印行
【发布时间】:2018-01-28 09:50:14
【问题描述】:

我正在尝试从 W3schools 学习 php,其中包括一个 mysql 部分。到目前为止,我已经完成了 w3school 教程的所有其他部分,除了从数据库表中打印内容的部分。由于一些非常奇怪的原因,当我运行我的代码时没有任何显示。请问我怎样才能让它工作,我的问题是否来自我使用 MariaDB 和 Xampp 而不是 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

【问题讨论】:

    标签: php mysqli xampp


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      记住数据库名称不区分大小写,因此无论您创建数据库名称“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";
      

      在这里,您再次创建了一个具有相同名称的数据库,并且您的代码停止工作,因为您已经拥有它。

      【讨论】:

        【解决方案3】:

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

        您绝对不希望代码每次都尝试擦除并重新开始数据库。事实上,我经常发现您甚至没有在常规代码中创建数据库,而是使用 phpMyAdmin 或其他一些管理页面来执行此操作。但是在代码中创建表是很正常的。两种选择:

        1 - 仅当表不存在时才创建表。这是非常安全的。然而,如果你想用一个新的结构重新开始一个表,或者从它总是空的开始,那是行不通的。为此,只需将CREATE TABLE 更改为CREATE TABLE IF NOT EXISTS

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

        【讨论】:

        • 该死,打败我,我正要发布同样的答案
        • 这并没有帮助我获取存储在表中的项目。尽管有这些丑陋的错误@manassehkatz,但实际上还是添加了记录
        • @uhexos - 更正记录无论如何都会被存储 - 这是预期的。你是说在运行结束时没有得到Could not get data:Fetched data successfully
        猜你喜欢
        • 2011-01-28
        • 2017-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        相关资源
        最近更新 更多