如何使用 PHP 将文本区域数据从 HTML 文档发送到 MySQL 数据库?

Posted

技术标签:

【中文标题】如何使用 PHP 将文本区域数据从 HTML 文档发送到 MySQL 数据库?【英文标题】:How do I use PHP to send text area data from an HTML document to MySQL database? 【发布时间】:2020-01-04 04:28:17 【问题描述】:

我正在使用 php 将文本区域输入指向 mysql 数据库。现在它抛出以下错误:“错误:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法”

在我发布的代码中,以 "mysql_select_db("main_data0",$con);" 开头的块并以 "('$_POST[textarea1]'";" 结尾为我在我的 html 中的每个文本区域重复。

我尝试切换到“mysqli”而不是“mysql_connect”,但这只会导致它显示更多错误。

<?php
$servername = "standridgen77573.domaincommysql.com";
$username = "nat_0g";
$password = "Lens981#bent";
$databasename = "main_data0";

try 
    $conn = new PDO("mysql:host=$servername;dbname=$databasenam", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
    
catch(PDOException $e)
    
    echo "Connection failed: " . $e->getMessage();
    

if(isset($_POST['textarea1'], $_POST['textarea2'], $_POST['textarea3'], $_POST['textarea4'], $_POST['textarea5'], $_POST['textarea6'], $_POST['textarea7'], $_POST['textarea8'], $_POST['textarea9']))
    $postdata_1 = $_POST['textarea1']; // here i declare post value to the $postdata variable    
    $postdata_2 = $_POST['textarea2']; // here i declare post value to the $postdata variable   
    $postdata_3 = $_POST['textarea3']; // here i declare post value to the $postdata variable
    $postdata_4 = $_POST['textarea4']; // here i declare post value to the $postdata variable    
    $postdata_5 = $_POST['textarea5']; // here i declare post value to the $postdata variable   
    $postdata_6 = $_POST['textarea6']; // here i declare post value to the $postdata variable
    $postdata_7 = $_POST['textarea7']; // here i declare post value to the $postdata variable    
    $postdata_8 = $_POST['textarea8']; // here i declare post value to the $postdata variable   
    $postdata_9 = $_POST['textarea9']; // here i declare post value to the $postdata variable


    $NewRecord = $conn->prepare("INSERT INTO info0 (textarea1, textarea2, textarea3, textarea4, textarea5, textarea6, textarea7, textarea8, textarea9) VALUES (?,?,?,?,?,?,?,?,?)"); // here is my mysql statement
    $NewRecord->execute([$postdata_1, $postdata_2, $postdata_3, $postdata_4, $postdata_5, $postdata_6, $postdata_7, $postdata_8, $postdata_9]); // here i use $postdata variable. Every ? mark represent one variable.

?>

【问题讨论】:

你错过了) $sql="INSERT INTO info0 (textarea1) VALUES ('$_POST['textarea1']')" 防止SQL注入! ***.com/questions/129677/… 伙计,我不知道我是怎么错过的。会尝试解决这个问题,如果这不起作用,我会尝试下面建议的 PDO 连接。 【参考方案1】:

我会向数据库推荐一个PDO connection。这对初学者来说更容易,而且安全得多。

$servername = "localhost";
$username = "username";
$password = "password";
$databasename = "databasename";

try 
    $conn = new PDO("mysql:host=$servername;dbname=$databasenam", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
    
catch(PDOException $e)
    
    echo "Connection failed: " . $e->getMessage();
    

然后在你连接到数据库之后你可以做这样的事情。

单身

if(isset($_POST['textarea1']))
    $postdata = $_POST['textarea1']; // here i declare post value to the $postdata variable
    $NewRecord = $conn->prepare("INSERT INTO info0 (textarea1) VALUES (?)"); // here is my mysql statement
    $NewRecord->execute([$postdata]); // here i use $postdata variable. The ? mark represent this.

多个

if(isset($_POST['textarea_1'], $_POST['textarea_2'], $_POST['textarea_3']))
    $postdata_1 = $_POST['textarea_1']; // here i declare post value to the $postdata variable    
    $postdata_2 = $_POST['textarea_2']; // here i declare post value to the $postdata variable   
    $postdata_3 = $_POST['textarea_3']; // here i declare post value to the $postdata variable
    $NewRecord = $conn->prepare("INSERT INTO info0 (textarea1, textarea2, textarea3) VALUES (?,?,?)"); // here is my mysql statement
    $NewRecord->execute([$postdata_1, $postdata_2, $postdata_3]); // here i use $postdata variable. Every ? mark represent one variable.

【讨论】:

现在正在学习,但我会在完成后立即尝试。非常感谢! 如果我需要对多个文本区域执行此操作,第二段代码会是什么样子?我可以为每个重复 if 块吗? 不,它不起作用。以下部分代码有错误:$NewRecord->execute([$postdata_1, $postdata_2, $postdata_3, $postdata_4, $postdata_5, $postdata_6, $postdata_7, $postdata_8, $postdata_9]);跨度> 请提供您使用的代码。完整代码 解析错误:语法错误,第 41 行 /hermes/bosnaweb18a/b2811/dom.standridgen77573/public_html/data.php 中出现意外的 '[',期待 ')'

以上是关于如何使用 PHP 将文本区域数据从 HTML 文档发送到 MySQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

您如何一次将文本区域动态添加到页面?

Javascript将文本区域保存为UTF-8文件

向 html 文本区域添加换行符

PDO 插入将文本区域上传到我的数据库

如何将文本区域内容保存在本地存储中

将文本区域中的 <br /> 替换为行分隔符(Javascript)