如何使用 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 数据库?的主要内容,如果未能解决你的问题,请参考以下文章