gpt4 book ai didi

php - 我的 SQL 缺少什么?

转载 作者:行者123 更新时间:2023-11-29 01:35:38 25 4
gpt4 key购买 nike

我正在学习 PHP 和 MySQL。我有一个正在创建数据库的实验室(通过虚拟机在 Ubuntu 中使用终端),我正在尝试使用 PHP 文件访问该数据库。

我使用此脚本创建了 1 个数据库(演示),其中包含 2 个表(demo_table、lab4)

CREATE TABLE `lab4` (
id int(11) NOT NULL AUTO_INCREMENT,
first_name varchar(100) DEFAULT NULL,
last_name varchar(100) DEFAULT NULL,
email varchar(128) DEFAULT NULL,
phone varchar(25) DEFAULT NULL,
PRIMARY KEY (id)
);

我可以通过终端看到它们已经按照我想要的方式创建了等等。

我在适当的目录 (/var/www/html) 中有一个 php 文件(提供给我),它可以正确运行,产生它应该的输出。这是该文件:

注意:我已经编辑了我的密码!

<?php

function listRecords($dbc, $dbtable){
$qry = "SELECT * FROM ".$dbtable.";";
if($result = $dbc->query($qry)){
if ($result->num_rows > 0){
while ($row = $result->fetch_assoc()){
foreach($row as $k=>$v){
Print $k." ".$v."\t";
}
print "\n";
}
} else {
echo "Nothing to output\n";
}
$result->free();
} else {
die("Error running database query for categories\n $qry \n");
}
}

$db_conn = new mysqli('localhost', 'l*******r', '*******', 'demo');
if ($db_conn->connect_errno) {
die ("Could not connect to database server".$db_host."\n Error: ".$db_conn-
>connect_errno ."\n Report: ".$db_conn->connect_error."\n");
}

$qry = "INSERT INTO demo_table values('1', 'First User',
'first@somewhare.com');";
$db_conn->query($qry);
$qry = "INSERT INTO demo_table values('2', 'Second User',
'second@somewhare.com');";
$db_conn->query($qry);
$qry = "INSERT INTO demo_table values('3', 'Third User',
'third@somewhare.com');";
$db_conn->query($qry);

listRecords($db_conn, 'demo_table');


print "\nDeleteing record 1\n";
$db_conn->query("DELETE FROM demo_table WHERE id='1';");

listRecords($db_conn, 'demo_table');

print "\nModifyingrecord 3\n";

$db_conn->query("UPDATE demo_table SET email='THIRD@newdomain.com' WHERE
id='3';");

listRecords($db_conn, 'demo_table');

$db_conn->close();

?>

这是提供给我的,我没有以任何方式改变我的导师给我的方式。这证实我至少正确地创建了 demo_table

我的任务是创建另一个 php 文件,它将执行一些其他类似的任务(基本的 sql 东西)。所以,我复制了我导师的listRecords函数,然后自己写了一堆sql查询。这是我的代码:

<?php
//A.


//function to be used in D. below
function listRecords($dbc, $dbtable)
{
$qry = "SELECT * FROM ".$dbtable.";";

if($result = $dbc->query($qry))
{
if ($result->num_rows > 0)
{
while ($row = $result->fetch_assoc())
{
foreach($row as $k=>$v)
{
Print $k." ".$v."\t";
}
print "\n";
}
} else
{
echo "Nothing to output\n";
}
$result->free();
} else
{
die("Error running database query for categories\n $qry \n");
}
}

//B.
//create a connection object
$db_conn = new mysqli('localhost', '*********', '*******', 'demo');

//IF CONNECTION FAILED: display errors
if ($db_conn->connect_errno)
{
die ("Could not connect to database server".$db_host."\n Error: ".$db_conn-
>connect_errno."\n Report: ".$db_conn->connect_error."\n");
}

//C.
//IF CONNECTION SUCCEEDED: perform SQL
//single variable name can be reused
$qry = "INSERT INTO lab4 values('First', 'User', 'first@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Second', 'User', 'second@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Third', 'User', 'third@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Fourth', 'User', 'fourth@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Fifth', 'User', 'fifth@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Sixth', 'User', 'sixth@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Seventh', 'User', 'seventh@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Eighth', 'User', 'eighth@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values('Ninth', 'User', 'ninth@somewhare.com', '1111111');";
$db_conn->query($qry);
$qry = "INSERT INTO lab4 values(Tenth', 'User', 'tenth@somewhare.com', '1111111');";
$db_conn->query($qry);

//D.
//display records
listRecords($db_conn, 'lab4');

//E.
//delete rows with IDs 2 and 4
$db_conn->query("DELETE from lab4 WHERE id=2");
$db_conn->query("DELETE from lab4 WHERE id=4");


//F.
//display all records after deletion in step E.
listRecords($db_conn, 'lab4');

//G.
//change email of 5th record
$db_conn->query("UPDATE lab4 SET email='newemail@somewhare.com' WHERE id=5");

//H.
//change first name of 8th record
$db_conn->query("UPDATE lab4 SET first_name='Newname' WHERE id=8");

//I.
//change last name of 10th record
$db_conn->query("UPDATE lab4 SET last_name='Lastname' WHERE id=10");

//K.
//close the database connection
$db_conn->close();
?>

所以我更改了一些格式,并将“demo_table”的每个实例更改为“lab4”。

当我运行我的 php(lab4.php,位于与之前代码相同的目录中)时,我收到消息 Nothing to output 两次。我对此的解释是我的表工作正常,我的 listRecords 工作正常(因为它没有给我与失败连接相关的错误消息)。

我最好的猜测是这是我的 SQL 查询的问题。

最佳答案

要么为 ID 列提供值,要么允许系统为您生成一个值(auto_increment)。

所以要么...

$qry = "INSERT INTO lab4 values(1, 'First', 'User', 'first@somewhare.com', '1111111')";

或者最好...

$qry = "INSERT INTO lab4 ( first_name, last_name, email, phone )
values ('First', 'User', 'first@somewhare.com', '1111111');";

这将为您生成 ID。

关于php - 我的 SQL 缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com