[英]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.