繁体   English   中英

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

[英]How can I get mysql to print rows from a database table

我正在尝试从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

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

您绝对不想让代码每次都试图擦除并重新启动数据库。 实际上,大多数时候我发现您甚至没有在常规代码中创建数据库,而是使用phpMyAdmin或其他管理页面来执行此操作。 但是在代码内部创建表已经足够正常了。 两种选择:

1-仅在表不存在时创建它。 这是非常安全的。 但是,如果您要使用新结构重新开始创建表格,或者始终将其始终为空,则无法使用。 为此,只需将CREATE TABLE更改为CREATE TABLE IF NOT EXISTS

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

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

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

错误是从此行$ sql ='SELECT id,fruitname,from myfruits的fruittaste';

我不小心放入了水果名称而不是水果类型,这就是导致它失败的原因。 因此,对于任何其他有此问题的人,我的建议是,如果您100%确定语法,请检查您的变量名。 感谢您的所有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM