【问题标题】:Can't upload text value to mysql by php [duplicate]无法通过php将文本值上传到mysql [重复]
【发布时间】:2018-03-26 11:23:23
【问题描述】:

每次我提交我的网站的表单以供评论,它只是创建一个新的ID。但是所有其他值都是空的,我该怎么办?我需要为名称、电子邮件和内容创建一些属性吗?

<?php
error_reporting(E_ALL);ini_set('display_errors',1); 

$servername = "localhost";
$username = "seamaszhou";
$password = "123456";
$dbname = "guest";




$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
$password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO guest 
(guestName,guestEmail,guestContent) 
VALUES (:guestName, :guestEmail, :guestContent)");

$stmt->bindParam(':guestName', $guestName);
$stmt->bindParam(':guestEmail', $guestEmail);
$stmt->bindParam(':guestContent', $guestContent);

 // insert a row
 $guestName = "$guestName";
$guestContent = "$guestContent";
$guestEmail = "$guestEmail";
$stmt->execute();



?>

HTML 代码:

【问题讨论】:

  • 你的 HTML 代码不应该是它的图像,它应该是实际的代码。请分别编辑您的帖子。
  • 你也已经发布了这个stackoverflow.com/questions/46744068/… 并且这个问题已经作为一个完全重复的问题被关闭了。

标签: php mysql phpmyadmin


【解决方案1】:

这是错误的:

// insert a row
$guestName = "$guestName";
$guestContent = "$guestContent";
$guestEmail = "$guestEmail";
$stmt->execute();

您尝试使用的变量不存在。您需要从$_POST 数组中检索表单发布的值:

$guestName = $_POST['guestName'];
$guestContent = $_POST['guestContent'];
$guestEmail = $_POST['guestEmail'];
$stmt->execute();

编辑:请注意,您对每个请求都运行此代码,即使未发布表单也是如此。您需要为此添加一个检查:

if (isset($_POST['guestName']) && isset($_POST['guestContent']) && isset($_POST['guestEmail'])) {
    $guestName = $_POST['guestName'];
    $guestContent = $_POST['guestContent'];
    $guestEmail = $_POST['guestEmail'];
    $stmt->execute();
}

实际上,您可能希望将与保存数据库中的数据有关的所有内容都放在 if-statement 中,这样您就不会在不去的时候打开数据库连接或准备语句使用它。

【讨论】:

  • 感谢您帮助我。我试图替换您提供的代码。但是网站跳出一些错误说: Notice: Undefined index: guestName in /var/www/htdocs/contact.php on line 25 Notice: Undefined index: guestContent in /var/www/htdocs/contact.php on line 26 Notice : 未定义索引:第 27 行 /var/www/htdocs/contact.php 中的 guestEmail
  • ANDFatal 错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[23000]:完整性约束违规:1048 列 'guestName' 不能为 null' 在 /var/www/htdocs/contact.php:28堆栈跟踪:#0 /var/www/htdocs/contact.php(28): PDOStatement->execute() #1 {main} 在第 28 行的 /var/www/htdocs/contact.php 中抛出
  • 这是因为您在每个请求上运行此代码,而不是仅在实际发布表单时运行。我已经更新了我的答案。
  • 哇,好用。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2016-02-19
  • 2020-07-18
相关资源
最近更新 更多