我一直在尝试将数据插入数据库。我一直遇到一个错误,它无法识别设置的内容。它认为这是无效的:if (isset($_POST['user_email']) AND isset($_POST['user_choice'])) {
,所以它跳过并显示我的echo和通过的值。这是我的HTML文件:
<?php
require_once("../inc/config.php");
$emailAddress ="";
if(isset($_POST["user_email"])) {
$emailAddress = trim($_POST["user_email"]);
$newsletter = trim($_POST["emailLetter"]);
if($emailAddress != "") {
require_once(ROOT_PATH . "inc/images.php");
$results = capture_email($emailAddress, $newsletter);
}
var_dump($results);
exit();
}
?>
<footer id="footer-class">
<form id="footer-form" method="post" action="">
<fieldset>
<legend id="footer-legend">Sign up for...</legend>
<input type="radio" name="emailLetter" id="PC" value="PC" checked><label class="footerlabel" for="PC">Computer</label>
<input type="radio" name="emailLetter" id="Photo" value="Photo"><label class="footerlabel" for="Photo">Photo</label>
<legend id="footer-legend">Newsletter!</legend>
<input id="footer-email" type="email" name="user_email" placeholder="Enter your email address here!" required>
<button type="submit" id="footer-button">Subscribe</button>
</fieldset>
<p>I won't spam you. Promise</p>
</form>
</footer>
</body>
</html>
这是我的PHP函数:
<?php
function capture_email($user_email, $user_choice) {
require(ROOT_PATH . "inc/database.php");
if (isset($_POST['$user_email']) AND isset($_POST['$user_choice'])) {
try {
$newsletter = $_POST["$user_choice"];
$email_address = $_POST["$user_email"];
$results = $db->prepare("INSERT INTO userinfo (Email, userOption) VALUES (?, ?)");
$results->bindparam(1, $email_address);
$results->bindparam(2, $newsletter);
$results->execute();
} catch (Exception $e) {
var_dump($e);
exit();
}
} else {
echo "Oops, something went wrong. Here is the user Email: " . $user_email . "<br>Here is the user choice: " . $user_choice;
exit();
}
}
附加信息:Config.php是一个包含数据库连接变量的文件。images.php是一个存储所有php函数的文件。如果您需要更多信息,请告诉我。感谢
您不需要POST它。它已经作为参数传递了。
if (isset($user_email) && isset($user_choice)) {
你也必须更改完整的代码。
<?php
function capture_email($user_email, $user_choice) {
require(ROOT_PATH . "inc/database.php");
if (isset($user_email) AND isset($user_choice) {
try {
$newsletter = $user_choice;
$email_address = $user_email;
$results = $db->prepare("INSERT INTO userinfo (Email, userOption) VALUES (?, ?)");
$results->bindparam(1, $email_address);
$results->bindparam(2, $newsletter);
$results->execute();
} catch (Exception $e) {
var_dump($e);
exit();
}
} else {
echo "Oops, something went wrong. Here is the user Email: " . $user_email . "<br>Here is the user choice: " . $user_choice;
exit();
}
}
我稍微更改了一下您的函数。你传递的帖子不是你的变量,所以它会导致错误。但这应该是
function capture_email($user_email, $user_choice) {
require(ROOT_PATH . "inc/database.php");
/*
*You passing the POST, but your surpose to pass thru the var from your function.
*
**/
if (isset($user_email) AND isset($user_choice) {
try {
$newsletter = $user_choice;
$email_address = $user_email;
/**
**Also Sorted your issue out with your speech mark's
**
**/
$results = $db->prepare("INSERT INTO userinfo (Email, userOption) VALUES (?, ?)");
$results->bindparam(1, $email_address);
$results->bindparam(2, $newsletter);
$results->execute();
} catch (Exception $e) {
var_dump($e);
exit();
}
} else {
echo "Oops, something went wrong. Here is the user Email: " . $user_email . "<br>Here is the user choice: " . $user_choice;
exit();
}
尝试此操作并重新运行代码。
if(isset($_POST['user_email']) AND isset($_POST['user_choice'])) { ... }
您可以这样使用这个条件:
if (isset($user_email) AND isset($user_choice)) {
try {
$newsletter = $user_choice;
$email_address = $user_email;
$results = $db->prepare("INSERT INTO userinfo (Email, userOption) VALUES (?, ?");
$results->bindparam(1, $email_address);
$results->bindparam(2, $newsletter);
$results->execute();
} catch (Exception $e) {
var_dump($e);
exit();
}
}
因为当您调用这个函数capture_email()时,您已经传递了两个三元组参数。
存在语法错误:
if (isset($_POST['$user_email']) AND isset($_POST['$user_choice'])) {
替换为:
if (isset($_POST['user_email']) AND isset($_POST['user_choice'])) {
更新尝试块也:
try {
$newsletter = $_POST["user_choice"];
$email_address = $_POST["user_email"];
$results = $db->prepare("INSERT INTO userinfo (Email, userOption) VALUES (?, ?");
$results->bindparam(1, $email_address);
$results->bindparam(2, $newsletter);
$results->execute();
} catch (Exception $e) {
var_dump($e);
exit();
}