从表单将文本转换为int

时间:2010-09-08 07:41:00

标签: php forms

我正在尝试从表单中获取一些数据,但我不能出于某种原因。 这是我的代码中的一些行。

cellphone: <input type = "text" name = "cellphone"><br />
username : <input type = "text" name = "username"><br />

    $cellphone = $_GET["cellphone"];
    //$cellphone = int() $cellphone;
    $username= $_GET["username"];

$link = mysql_connect('myhost', 'myuser', 'mypass') or die("could not connect to database");
    mysql_select_db ('hunter',$link) or die ("could not find database");
    echo "fetced database";
    //injecting user info into database
    mysql_query("INSERT INTO player values ('','$firstname','$lastname','$location','$cellphone','$username','$email','$password')")or die("could not inject into database.");

但由于某种原因,我无法获取进入我的数据库的单元格号。 请帮帮我:D

4 个答案:

答案 0 :(得分:3)

<强> FIRST:
必须清理所有传入的变量!

然后,要转换为整数,您可以使用:

$cellphone = (int) $_GET["cellphone"];

更好的解决方案是使用filter_var();

$cellphone = filter_var( $_GET["cellphone"], FILTER_VALIDATE_INT);

在编写任何其他代码之前,您应该阅读input validation/sanitazion和filter_var。


现在,在人们开始提出建议mysql_real_escape_string()(完成工作,但不是最佳解决方案)之前,请通过PDO或MySQLi查看prepared statements

答案 1 :(得分:2)

  1. 制作你的表单POST方法,而不是GET。 GET用于请求数据和POST用于存储。
  2. 考虑使用varchar类型字段作为电话号码。
  3. 虽然在插入之前规范化电话号码是一个非常好的主意,但要从中删除所有非数字字符。

答案 2 :(得分:1)

  • 用die(mysql_error())替换die(“msg”)以调试失败的原因
  • 不要将用户提供的数据直接插入数据库,使用mysql_real_escape_string()或类似方法来清理数据并防止SQL注入
  • 如果问题是你的手机字段被声明为int进入DB,那么在执行插入之前确保它是一个整数。您可以尝试转换为int,但我认为您应该对数据执行更准确的清理,检查每个字段的预期“允许”格式和类型,并在发生错误插入时向用户返回每字段错误< / LI>

顺便说一句,如果你将一个电话号码存储为整数,你就无法很好地处理国际前缀(例如意大利的+39或0039),因为“+”不是数字,而“00”将是在演员表中丢失为整数......

答案 3 :(得分:1)

这可能是您的mysql列只接受INT但输入是字母数字。在这种情况下,如果您期望仅整数输入

,则可以使用$cellphone = filter_var($_GET['cellphone'], FILTER_SANITIZE_NUMBER_INT);