【问题标题】:Adding Checks in php for database submit在 php 中为数据库提交添加检查
【发布时间】:2014-07-20 13:19:35
【问题描述】:

编辑: 我把它弄起来并为空支票工作,号码不能从零支票开始 我是怎么做到的:

//Empty Check:
if (empty($_POST["number"])) {
    $numberErr = "Number can't be empty";
  } else {
    $number = test_input($_POST["number"]);
         }

//Zero Check
$zero = substr($number,0,1);
    if ($zero === "0") {
    $zeroErr = "Number can't start with 0";

并将此代码提交到数据库:

if (empty($_POST["number"])) {
    $numberErr = "Number can't be empty";
} elseif ($zero === "0") {
    $zeroErr = "Number can't start with 0";
} else {
    $number = mysqli_query($con,$sql);
    echo "<script type='text/javascript'>\n";
    echo "alert('!Added');\n";
    echo "</script>";
    exit;

唯一的缺点是我必须两次声明变量,一次在表单标签之前(因为表单中出现错误),一次在提交到数据库之前(满足条件),奇怪的是数字成功添加到数据库,但如果我在最后回显数字,它会显示为 (1)!,这是为什么呢?有没有更好的方法来做到这一点?

关于“如果存在检查”: mysqli_num_rows 正在返回一个错误,在我让它工作之后,代码忽略了我关于空检查和零检查的规则,并在数据库中插入了任何不重复的内容!,对不起,我没有我所做的代码,我一生气就删除了:)


我制作了一个仅用于收集电话号码的表格,我尝试添加一些功能但失败了,可以请你帮忙..

数据库提交的php代码如下:

<?php
$con = mysql_connect("localhost","root","PW");
if (!$con){
die('Could not connect: ' . mysql_error());
}

$number = mysql_escape_string($_POST['number']);

mysql_select_db("wa_phones", $con);
$sql="INSERT INTO phone (number)
VALUES 
('$number')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
header("Location: done.html");

我需要在提交之前添加 php 检查数据库中的重复项并检查空条目并检查不允许“0”作为初始数字...

我在这里和那里尝试了很多示例,但我无法使其与我已有的代码一起工作

感谢您的帮助

【问题讨论】:

  • 您能告诉我们您已经尝试过什么,以及为什么它没有奏效吗?
  • “我在这里和那里尝试了很多示例,但我无法使用我已有的代码使其工作” - 哪个?我没有看到与检查重复项相关的代码。您可以使用mysql_num_rows() 或将您的列设置为UNIQUE
  • 不要使用 mysql_* 函数。请改用 mysqli 或 PDO。

标签: php mysql database input


【解决方案1】:

听起来你需要解决以下问题:

验证电话号码

if( ! strlen($number) ) {
    // Phone number is empty.
}
else if( substr($number,0,1) == "0" ) {
    // First digit of phone number is 0.
}

检查是否已经在数据库中

$phone_check_sql = "SELECT number FROM phone WHERE number = '$number'LIMIT 1";
$phone_check_result = mysql_query($phone_check_sql) || die("Some error: ".mysql_error());
if( mysql_num_rows($phone_check_result) != 0 ) {
    // Number already exists.
}

您可以在这些条件块中处理您想要的错误。

【讨论】:

  • 更正:else if( substr($number,0,1) === "0" ) { 正在处理中,完成后我会在这里发布,以便其他人使用它
猜你喜欢
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多