使用MySQL和PHP将数据从用户表单插入/记录到数据库中
我一直在尝试将数据插入我的数据库。我不断收到一个错误,它无法识别设置的内容。它认为这是无效的:使用MySQL和PHP将数据从用户表单插入/记录到数据库中,php,mysql,database,Php,Mysql,Database,我一直在尝试将数据插入我的数据库。我不断收到一个错误,它无法识别设置的内容。它认为这是无效的:if(isset($\u POST['user\u email'])和isset($\u POST['user\u choice']){,因此它跳过并显示通过的值的我的回音。 这是我的HTML文件: <?php require_once("../inc/config.php"); $emailAddress =""; if(isset($_POST["user_email"])) {
if(isset($\u POST['user\u email'])和isset($\u POST['user\u choice']){
,因此它跳过并显示通过的值的我的回音。
这是我的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();
}
}
尝试此操作并重新运行代码
if(isset($_POST['user_email']) AND isset($_POST['user_choice'])) { ... }
出现语法错误:
if (isset($_POST['$user_email']) AND isset($_POST['$user_choice'])) {
替换为:
if (isset($_POST['user_email']) AND isset($_POST['user_choice'])) {
同时更新try块:
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();
}
您可以这样使用此条件:
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\u email()时,您传递了两个修剪的参数。您不需要发布它。它已作为参数传递
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();
}
}
我稍微更改了您的函数。您传递的是post而不是变量,因此会导致错误。但这应该可以工作
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();
}
function capture\u email($user\u email,$user\u choice){
require(ROOT_PATH.“inc/database.php”);
/*
*您正在传递POST,但是您的SUPPOSE需要从函数中传递var。
*
**/
if(isset($user\u email)和isset($user\u choice){
试一试{
$newsletter=$user\u choice;
$email\u address=$user\u email;
/**
**还用你的语言标记解决了你的问题
**
**/
$results=$db->prepare(“插入到userinfo(电子邮件,userOption)值(?,)”;
$results->bindparam(1,$email\u地址);
$results->bindparam(2$newsletter);
$results->execute();
}捕获(例外$e){
var_dump($e);
退出();
}
}否则{
echo“哎呀,出了点问题。这是用户电子邮件:.$user\u Email。”
这是用户选择:.$user\u choice;
退出();
}
将其更改为此,会出现另一个错误注意:未定义索引:C:\xampp\htdocs\inc\images.php中的PC,第130行注意:未定义索引:nick@nick在C:\xampp\htdocs\inc\images.php中的第131行object(PDOException)#3(8){[“message”:protected]=>string(202)“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法中有一个错误;…发生了其他一些错误,所以我100%确定,它进入了if条件。我在StackUser2014更新了它。检查了一次。我也更新了它显示了您的更改,并且它返回了一个SQL语法错误:object(PDOException)#3(8){[“message:protected]=>string(202)”SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行“[”字符串“:“Exception”:private]=>string(0)”“[“code”:protected]=>string(5)“42000”[“file”:protected]=>string(30)附近使用的正确语法你在insert语句中写了错误的代码。我更新了它。检查一下@StackUser2014Ah太好了!这就是问题所在。谢谢你的帮助。尝试了之后,我仍然收到相同的错误,它认为这行,`if(isset($\u POST['user\u email'])和&isset($\u POST['user\u choice']){`是false,所以跳到“echo”“哦,出了点问题。这是用户电子邮件…”错误在您的html代码中没有“用户选择”的输入。因此,您需要在此处添加输入,或者可以从if条件中删除。我已更新了上面的内容,以显示在何处进行了更改。