programing

HTML - PHP의 텍스트 영역을 사용하여 MariaDB 테이블에 두 개의 값 삽입

i4 2023. 6. 30. 22:05
반응형

HTML - PHP의 텍스트 영역을 사용하여 MariaDB 테이블에 두 개의 값 삽입

리눅스에서 PHP를 사용하여 HTML의 TEXT AREA의 텍스트를 mariaDB의 테이블에 추가하려고 합니다.기본적으로 양식에는 두 개의 "상자"가 있습니다.하나는 사용자를 식별하고 두 번째는 텍스트를 추가합니다.사용자가 이미 텍스트를 추가한 경우에는 더 이상 텍스트를 추가할 수 없습니다.저는 PHP의 쿼리를 사용하여 TEXT AREA(HTML에서)의 이름과 텍스트를 추가하는 데 어려움을 겪고 있습니다.아이디어 있어요?

이것은 마리아에 있는 나의 테이블입니다.DB:

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">&laquo; 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">&laquo; 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>';
}
?>

값 사이의 쉼표 누락 시도

INSERT INTO TableMarch(name, messagetext) VALUES( :name , :messagetext)

PDO 예외도 설정합니다.

$connection = new PDO("mysql:host=" . $host . ";dbname=" . $db_name, $username, $password);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

귀하의 경우(또는 다른 경우)에 오류가 표시됩니다.

치명적 오류:발견되지 않은 PDO 예외: SQLSTATE[HY000]:일반 오류: 1364 필드 '날짜'에 기본값이 없습니다...

괜찮으시다면date필드가 null이거나 항상 삽입되는 유효한 날짜 레코드가 삽입됩니다.

방금 테스트했습니다.

그리고! 꼭!$_POST['name']그리고.$_POST['textmessage']전송됩니다.

제가 볼 수 있는 것처럼, 당신이 가지고 있는 정보입니다.name="message"하지만 가져오려고 노력하는 것.textmessage먼저 이 버그들을 모두 수정해주시기 바랍니다.디버거와 브라우저의 검사기를 사용하여 필요한 모든 데이터가 스크립트에 도착하는지 확인합니다.

언급URL : https://stackoverflow.com/questions/66373508/insert-two-values-into-mariadb-table-using-a-textarea-in-html-php

반응형