由于特殊字符

时间:2017-01-06 19:38:29

标签: php html

我有一个表单字段用于更新 - 我已经让管理员能够对评论进行更改:

 <form method="post" action="form_action.php?job_numb=<?=$job_numb;?>" enctype="multipart/form-data"> 
    <textarea class="form-control" 
          rows="10" 
          name="comments" 
          maxlength="5000">
        <!--This is grabbing the previous $comments from the database-->
        <?php echo html_entity_decode($comments);?>
    </textarea>
</form>

我想知道为什么文字似乎被截断或截断,认为它与字符限制它没有有关。你如何确保特殊字符不会阻止SQL破坏?

SQL行设置为text。

1 个答案:

答案 0 :(得分:-1)

我从那时起就知道我只需要准备好的陈述,那就是&#34;清洁&#34;根本没有必要提供数据。

请参阅以下代码

 <?php
      $servername = "localhost";
      $username = "XXXXX";
      $password = "XXXXX";     

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

      if(isset($_POST['submit']) && !empty($_POST['submit'])) {
            $job_name = htmlspecialchars($_POST['job_name'], ENT_QUOTES, 'UTF-8');
            $comments = htmlspecialchars($_POST['comments'], ENT_QUOTES, 'UTF-8');
            }

       $conn->exec($sql);
            }
       catch(PDOException $e)
          {
       echo "Connection failed: " . $e->getMessage();
          }
       $conn = null;

 $sql = "UPDATE `jobs_canjobs` SET
     `job_name`='$job_name',
     `comments`='$comments'
      WHERE job_numb = '$job_numb'";
 ?>

不需要第二个变量,虽然之前的方法有效 - 但这只是一个额外的步骤。