我怎样才能让mysql从数据库表中打印行
我想从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
基于该错误消息,您成功地创建数据库和表一次,现在每次运行该代码时,因为你不能重复使用名称失败。
你绝对不想让代码试图擦除&每次都启动新的数据库。事实上,大多数情况下,我发现您甚至不会在常规代码中创建数据库,而是使用phpMyAdmin或其他管理页面来执行此操作。但是在代码中创建表格是正常的。两种选择:
1 - 仅在表格尚不存在时才创建表格。这非常安全。但是,如果你想用新结构重新开始一个表格,或者从头开始总是空的,那么这是行不通的。为此,只需将CREATE TABLE
更改为CREATE TABLE IF NOT EXISTS
2 - 在创建表之前删除表。每个CREATE TABLE
命令之前,添加一个命令状DELETE TABLE IF EXISTS MyFruits
记住数据库名称是区分大小写的,所以它不会不管你是否创建一个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";
在这里,你将再次创建具有相同名称的数据库和你的代码停止工作,因为你已经拥有了它。
错误来自于此行 $ sql ='SELECT id,fruitname,fruittaste FROM myfruits';
我不小心把fruitname而不是fruittype,这是什么导致它失败。所以对于任何其他有问题的人,我的建议是检查你的变量名,如果你100%确定你的语法。感谢所有的帮助。
该死的,击败了我,我正要发布这个相同的答案 –
,没有帮助我得到存储在表中的项目。尽管存在这些丑陋的错误,记录实际上也会被添加@manassehkatz – uhexos
@uhexos - 更正记录无论如何都存储 - 这是预期的。你是说在运行结束时你没有得到'无法获取数据:'或'成功提取数据'吗? – manassehkatz