gpt4 book ai didi

php - 尝试使用 PDO 将新行插入数据库

转载 作者:行者123 更新时间:2023-11-29 22:08:34 25 4
gpt4 key购买 nike

好吧,我已经尝试这样做好几天了,并且我一直在阅读各种教程,但我似乎错过了一些东西,因为我仍然无法得到它。我正在努力学习网络表单并将表单输入插入到相应的数据库中。我可以从表单中获取信息并在结果页面上回显它,所以我知道一切都有效。但我似乎无法将表单输入输入到我的数据库中。我知道连接有效,所以我的语法一定有问题。

PHP

//DB Configs
$username = null;
$password = null;

try {
$db = new PDO("mysql:host=localhost;dbname=Testing3", $username, $password);
//Set the PDO error mode to exception (what does this mean?)
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Prepare SQL and bind parameters
$sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Name`)
VALUES (:name)");

//Insert a Row
$species = $_POST['Species'];
$sql->execute(array(':name'=>$species));

}
catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');
//Query
/*
$input = $db->query("INSERT INTO `NFK_Species` (`Id`, `Name`) VALUES (Null, `$species`)");

$result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');*/

//Kill Connection
$db = Null;
}

HTML/PHP(网页)

<h1>Inserting a New Species into Database:</h1>
<h3>Results</h3>
<?php
if ($sql->execute()){
echo "Data input was successful";
while ($rows = $result->fetch()){
echo $rows['Name']; echo ", ";
}
} else {
echo "Data input failed."; echo mysql_error();

}
?>

这只是我目前的尝试。我更喜欢之前的尝试,使用 bindParam 和简单的 execute(),所以如果我能让它正常工作,我将不胜感激。以下示例还具有该表的 Id 列。这是一个自动增量列,我读到不需要包含它,所以我将其从我最近的尝试中排除。这是正确的吗?

过去的 PHP

//Prepare SQL and bind parameters
$sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Id`, `Name`)
VALUES (Null, :name)");
$sql->bindParam(':name', $species);

//Insert a Row
$species = $_POST['Species'];
$sql->execute();

我已经阅读了很多教程(或试图阅读),包括尝试破译 php.net 教程,但它们似乎都是为那些已经很好地掌握了这一点并且对正在发生的事情有经验的人编写的继续,我对这一切都很陌生。

最佳答案

好吧,我能够找出我的问题,然后使用我的代码成功插入一行。

调试:

所以上面发布的代码破坏了我的代码,这意味着我的页面无法加载。我认为这意味着某处存在语法错误,但我找不到它,而且还没有其他人找到它。另外,这意味着我的错误警报无法让我知道问题所在。如果你看一下我原来的 PHP 示例,你会发现在最底部有一个 "}" 只是卡在外面并且没有任何作用,但更重要的是,它破坏了代码(愚蠢的) ,超敏感的 php 代码)。所以我摆脱了它,然后我的错误消息开始起作用。它说我无法连接到我的数据库。因此,我查看了我的数据库登录语法,它看起来不错,然后您会注意到在我的第一个 php 示例中,我设法设置了我的 $username$passwordNULL。显然这是不正确的。所以我修复了这个问题,下次刷新页面时,我已成功在数据库中输入一行! (耶)

注意:

在我原来的 php 示例中,我包含了 Id 列,该列是自动递增的,用于行插入,值为 NULL。这行得通,并且插入了该行。然后我尝试完全忽略它,但它仍然有效。因此,下面更新的工作代码不包含物种 ID。

工作代码:

<body>
<h1>Inserting a New Species into Database:</h1>
<h3>Results</h3>

<?php

//DB Configs
$username = root;
$password = root;

try {
//Connect to Database
$db = new PDO("mysql:host=localhost;dbname=Testing3", $username, $password);
//Enable PDO Error Alerts
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Prepare SQL statement and bind parameters
$sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Name`) VALUES (:name)");
$sql->bindParam(':name', $species);

//Insert a Row
$species = $_POST['Species'];
$sql->execute();

// Echo Successful attempt
echo "<p class='works'><b>" . $species . "</b> successfully added to database.</p></br></br>";

}
catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}

// Gather updated table data
$result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');

//Kill Connection
$db = Null;

while ($rows=$result->fetch()){
echo $rows['Id']; echo " - "; echo $rows['Name']; echo "</br>";
}
?>

<body>

关于php - 尝试使用 PDO 将新行插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909991/

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