在HTML-PHP中使用textarea将两个值插入MariaDB表
我正在尝试在Linux中使用PHP将HTML文本区域中的一些文本添加到我在mariaDB中的表中。 表单基本上有两个“框”。一个用于标识用户,另一个用于添加文本。 如果用户已添加文本,则无法添加更多文本。 我正在努力使用PHP中的查询从TEXTAREA(来自HTML)添加名称和文本。 有什么想法吗 这是我在MariaDB的桌子:在HTML-PHP中使用textarea将两个值插入MariaDB表,php,mysql,mariadb,Php,Mysql,Mariadb,我正在尝试在Linux中使用PHP将HTML文本区域中的一些文本添加到我在mariaDB中的表中。 表单基本上有两个“框”。一个用于标识用户,另一个用于添加文本。 如果用户已添加文本,则无法添加更多文本。 我正在努力使用PHP中的查询从TEXTAREA(来自HTML)添加名称和文本。 有什么想法吗 这是我在MariaDB的桌子: create table TableMarch( id int NOT NULL AUTO_INCREMENT, name varc
create table TableMarch(
id int NOT NULL AUTO_INCREMENT,
name varchar(255) UNIQUE,
messagetext TEXT,
date DATE NOT NULL,
PRIMARY KEY (id)
);
这是我的html表单:
---SOMETHING---
.
.
.
<body>
<form action="form_submit.php" class="alt" method="POST">
<div> <img class="marginauto" src="image.JPG" alt="centered image" /> </div>
<h2> <center>APP</center></h2>
<label for="name">ID</label>
<input type="text" name="name" id="name" placeholder="ID"/>
<textarea name="message" for="message" placeholder="Please, type your message" maxlength="300"></textarea>
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>
——什么---
.
.
.
应用程序
身份证件
这是我用PHP编写的代码:
<?php
$host = "localhost";
$db_name = "dev_to";
$username = "XXX";
$password = "XXX";
$connection = null;
try{
$connection = new PDO("mysql:host=" . $host . ";dbname=" . $db_name, $username, $password);
$connection->exec("set names utf8");
}catch(PDOException $exception){
echo "Connection error: " . $exception->getMessage();
}
function saveData($name){
global $connection;
$query = "INSERT INTO TableMarch(name, messagetext) VALUES( :name , :messagetext )";
$callToDb = $connection->prepare( $query );
$name=htmlspecialchars(strip_tags($name));
$messagetext = $_POST['messagetext'];
//$callToDb->bindParam(":name", $name);
$callToDb->bindParam(":name", $name, ":messagetext", $messagetext );
if (!$callToDb->execute()) {
$_SESSION['message']='This is your message';
$affected_rows = $callToDb->rowCount();
if ($affected_rows == 0) {
$query2 = "SELECT date FROM test WHERE name = ?";
$result2 = $connection->prepare($query2);
$result2->execute([$name]);
$datee = $result2->fetch();
foreach ($datee as $value);
printf('<h1> User ' . $name . ' has already sent a comment: ' . $value . '</h1>' );
echo '<p><a href="http://xx.xx.xx.xx/app.html" title="Return to previous page">« return to app</a></p>';
}
} else {
printf('<h1> Thanks for sending your comment. </h1>');
echo '<p><a href="http://xx.xx.xx.xx/aplicativo.html" title="Return to previous page">« return to app</a></p>';
}
}
if( isset($_POST['submit'])){
$name = htmlentities($_POST['name']);
//then you can use them in a PHP function.
$result = saveData($name);
//echo $result;
}
else{
echo '<h3 style="text-align:center;">ERROR WITH LOGIN</h3>';
}
?>
值之间缺少逗号,请重试
插入到TableMarch(名称,messagetext)值(:名称,:messagetext)
同时启用PDO异常:
$connection=new-PDO(“mysql:host=“.$host.”dbname=“.$db_name、$username、$password”);
$connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
您将在您的案例中看到一个错误(或者其他错误)
致命错误:未捕获PDOException:SQLSTATE[HY000]:常规错误:1364字段“日期”中没有默认值
如果允许日期字段为空或始终插入,将插入有效的日期记录
刚刚测试过
还有!确保已发送$\u POST['name']
和$\u POST['textmessage']
正如我所看到的,在表单中,您有name=“message”
,但试图获取textmessage
。请先修复所有这些错误。使用调试器和浏览器的检查器确保所有必需的数据都到达脚本。请不要添加不适当的标记,使您的问题看起来脱离主题spammyPDOStatement::bindParam(mixed$parameter,mixed&$variable,int$data_type=PDO::PARAM_STR,int$length=?,mixed$driver_options=?)
您正在尝试吗(key,value,key-value)分别绑定每个参数。它现在就可以了。请检查我对另一个clueb的编辑,因为您现在没有在插入查询中添加它,也没有设置字段的默认值