gpt4 book ai didi

mysql - PHP;原产地保护组织;数据库; INSERT 查询不接受输入

转载 作者:行者123 更新时间:2023-11-30 22:46:58 24 4
gpt4 key购买 nike

我正在做一个个人项目,试图进行 PDO 和 MySQL 查询。几个星期以来,我一直在与此作斗争。我进行了广泛的研究,并在其他论坛上找到了许多很好的教程和问题。但是,我对这个问题感到非常困惑。我目前的代码只接受一个值传递给数据库。但是我总是收到 undefined variable 通知。当我为使用的变量初始化一个空变量时,它只是将一个空记录添加到数据库中。我该怎么办。我已尽可能推迟请求。

addpub.php

<?php

require_once("dbconn.php");

try {
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname; charset=utf8",$dbuser,$dbpass,$dbo);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
Comics DB > Add Publisher
</title>
<link rel="stylesheet" type="text/css" href="comicsdb.css">
</head>
<body>
<div class="main">
<menu>
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="add.php">Add</a></li>
<li><a href="edit.php">Edit</a></li>
<li><a href="delete.php">Delete</a></li>
<li><a href="list.php">List</a></li>
<li><a href="search.php">Search</a></li>
</ul>
</menu>
<div class="pub_menu">

<form action="addpub.php" method="POST" enctype="text/plain" id="form">
<p>
Publisher: <input type="text" name="name" id="name">&nbsp;<input type="submit" value="Add Publisher" name="addPubBtn" id="addPubBtn">
</p>
</form>
<?php
$q = $conn->prepare("INSERT INTO publisher (name) VALUES (:name)");
$q->bindValue(':name', $name, PDO::PARAM_STR);
if(isset($name))
$q->execute();
else
echo "FAIL!";
?>
</div>
</body>
</html>

dbconn.php

<?php

$dbhost = '127.0.0.1';
$dbname = 'comicsdb';
$dbuser = '****';
$dbpass = '****';
$dbo = array(
// important! use actual prepared statements (default: emulate prepared statements)
PDO::ATTR_EMULATE_PREPARES => false
// throw exceptions in case of errors (default: stay silent)
, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
// fetch associative arrays (default: mixed arrays)
, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);

?>

最佳答案

你的源应该看起来更像这样(如果你只有一个文件,它是一个示例)

addpub.php 的内容 打印_r($_POST);

if(isset($_POST['name'])){
require_once("dbconn.php");

try {
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname; charset=utf8",$dbuser,$dbpass,$dbo);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}

$q = $conn->prepare("INSERT INTO publisher (name) VALUES (:name)");
$q->execute(array(':name'=>$_POST['name']));
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
Comics DB > Add Publisher
</title>
<link rel="stylesheet" type="text/css" href="comicsdb.css">
</head>
<body>
<div class="main">
<menu>
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="add.php">Add</a></li>
<li><a href="edit.php">Edit</a></li>
<li><a href="delete.php">Delete</a></li>
<li><a href="list.php">List</a></li>
<li><a href="search.php">Search</a></li>
</ul>
</menu>
<div class="pub_menu">
<form action="addpub.php" method="POST">
<p>
Publisher:
<input type="text" name="name" />
<input type="submit" value="Add Publisher" name="addPubBtn" />
</p>
</form>
</div>
</body>
</html>

在这种情况下,您将表单中的数据插入到您的数据库中。如果表单的目标是其他页面,则必须将“pdo 插入部分”添加到 POST 目标。否则你将永远不会有数据!

此外,您不应将输出源与逻辑源混合使用。所以可以看看一些模板系统,比如 Smarty。

关于mysql - PHP;原产地保护组织;数据库; INSERT 查询不接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29330156/

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