【问题标题】:PHP: Ignoring whitespaces and casing in form validationPHP:在表单验证中忽略空格和大小写
【发布时间】:2020-01-21 14:11:58
【问题描述】:

我正在创建一个用于创建课程(课程代码)的教育平台。我希望能够防止插入新课程代码而忽略正在使用的大小写或使用空格。例如,如果“PHY 101”已经存在并且“phy101”中有一种类型。它应该拒绝新条目。

$new_course = $_POST['new_course'];
$sql = mysqli_query($conn, "SELECT * FROM courses WHERE course = '$new_course'") or die(mysqli_error($conn));
        $num_row=mysqli_num_rows($sql);
        if($num_row === 1){
          echo "<script>
          alert('Course code already exists.');
          window.location = 'create_newcourse.php';
          </script>";                                
        }

【问题讨论】:

  • 对不起。知道的请回答。
  • 这能回答你的问题吗? How do I strip all spaces out of a string in PHP?
  • 不是真的@mitkosoft。数据库中的某些条目已经有空格:例如“PHY 101”。我希望能够防止插入“phy101”之类的东西。
  • 那么您需要在course 列和$_POST['new_course'] 上应用此逻辑(小写,无空格)
  • 当你插入数据时,如果你插入 Upper 或 Lower 总是会拒绝(如果存在)

标签: php mysql validation whitespace casing


【解决方案1】:

如果您的 courses 表中已有记录,则需要预先均衡两个字符串(course 列和 $_POST['new_course']):

$new_course = strtolower(str_replace(' ', '',$_POST['new_course']));
$sql = mysqli_query($conn, "SELECT * FROM courses WHERE LOWER(REPLACE(`cource`, ' ', '')) = '$new_course'") or die(mysqli_error($conn));

如果您不需要进一步格式化 $new_course 值,则可以仅在 SQL 级别执行这两种修改,例如:

$sql = mysqli_query($conn, "SELECT * FROM courses WHERE LOWER(REPLACE(`cource`, ' ', '')) = LOWER(REPLACE('$new_course', ' ', ''))") or die(mysqli_error($conn));

【讨论】:

  • 好点@PaulSpiegel,不是真的需要,谢谢!答案已更新。
  • @mitkosoft 你确定:小写(str_replace(' ', '',$_POST['new_course']));真的有用吗?
  • @Godlovesme,当然不是! :) 我的错,一定是strtolower,更新了。
猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 2023-02-18
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2014-08-03
相关资源
最近更新 更多