Php mysql列中的所有字符串或字符都将变为数字1

Php mysql列中的所有字符串或字符都将变为数字1,php,mysql,Php,Mysql,我尝试创建一个简单的注册系统。我发现了一个问题,然而,我所有插入数据库的数据都变成了数字。 当我通过php而不是命令提示符或phpmyadmin插入这些数据时,就会发生这种情况。例如,我在表单中键入first name、lastname等,表中的值为数字1。我不知道这个号码是从哪里来的。我浏览又浏览,不知道关键词是什么。请参阅下面的代码,并给出建议或明确解释 //TABLE STRUCTURE user_id INT (10) NOT NULL AUTO_INCREMENT, fname VAR

我尝试创建一个简单的注册系统。我发现了一个问题,然而,我所有插入数据库的数据都变成了数字。 当我通过php而不是命令提示符或phpmyadmin插入这些数据时,就会发生这种情况。例如,我在表单中键入first name、lastname等,表中的值为数字1。我不知道这个号码是从哪里来的。我浏览又浏览,不知道关键词是什么。请参阅下面的代码,并给出建议或明确解释

//TABLE STRUCTURE
user_id INT (10) NOT NULL AUTO_INCREMENT,
fname VARCHAR (100) NOT NULL,
lname VARCHAR (100) NOT NULL,
username VARCHAR (100) NOT NULL,
city VARCHAR (150) NOT NULL,
access timestamp (15) NOT NULL,
primary key (user_id);

//DB CONNECTION
$host = "localhost";
$user = "root";
$pass = "";
$dbas = "user";
$conn = mysql_connect($host, $user, $pass) or die(mysql_error("not connected"));
$data = mysql_select_db($dbas, $conn) or die(mysql_error("couldn't find"));

//FORM PROCCESS --> proccess.php
$id = isset($_POST['user_id']);
$fname = mysql_real_escape_string(isset($_POST['fname']));
$lname = mysql_real_escape_string(isset($_POST['lname']));
$username = mysql_real_escape_string(isset($_POST['username']));
$city = mysql_real_escape_string(isset($_POST['city']));
$access = date("m-d-y");

if(isset($_POST['submit']) !== '')
{
    if($id == '' && $fname == '' && $lname == '' && $username == '' && $city == '' && $access == ''){
        echo "please fill empty";
    } else {
        $sql = mysql_query("INSERT INTO user (user_id, fname, lname, username, city, access) VALUES (null, '".$fname."', '".$lname."', '".$username."', '".$city."', '".$access."')");

        if($sql)
        {
            echo "success";
        }
    }
}

//RETRIEVE DATA
$query = "SELECT * FROM user";
$result = mysql_query($query);
while($getit = mysql_fetch_array($result))
{
    echo "<table>";
    echo "<tr>";
    echo "<td>" .$getit['fname']. "<td/>";
    echo "</tr>";
    echo "</table>";
}

// FORM STRUCTURE
<form action="proccess.php" method="post">
    <input type="hidden" name="user_id">
    <input type="hidden" name="access">
    <input type="text" name="fname">
    <input type="text" name="lname">
    <input type="text" name="username">
    <input type="text" name="city">
    <button type="submit" name="submit">REGISTER</button>
</form>
//表结构
用户id INT(10)非空自动增量,
fname VARCHAR(100)不为空,
lname VARCHAR(100)不为空,
用户名VARCHAR(100)不为空,
city VARCHAR(150)不为空,
访问时间戳(15)不为空,
主键(用户id);
//数据库连接
$host=“localhost”;
$user=“root”;
$pass=“”;
$dbas=“用户”;
$conn=mysql\u connect($host,$user,$pass)或die(mysql\u错误(“未连接”);
$data=mysql\u选择\u db($dbas,$conn)或die(mysql\u错误(“找不到”);
//表单进程-->进程.php
$id=isset($\u POST['user\u id']);
$fname=mysql\u real\u escape\u字符串(isset($\u POST['fname']);
$lname=mysql\u real\u escape\u字符串(isset($\u POST['lname']);
$username=mysql\u real\u escape\u字符串(isset($\u POST['username']);
$city=mysql\u real\u escape\u字符串(isset($\u POST['city']);
$access=日期(“m-d-y”);
如果(设置($_POST['submit'])!='')
{
如果($id=''&&$fname=''&&$lname=''&&&$username=''&&$city=''&&$access=''){
回音“请填空”;
}否则{
$sql=mysql_查询(“插入到用户(用户id、fname、lname、用户名、城市、访问)值(空,“$fname.”、“$lname.”、“$username.”、“$city.”、“$access.”);
如果($sql)
{
呼应“成功”;
}
}
}
//检索数据
$query=“从用户选择*”;
$result=mysql\u query($query);
而($getit=mysql\u fetch\u数组($result))
{
回声“;
回声“;
echo“$getit['fname']”;
回声“;
回声“;
}
//形式结构
登记

提前感谢

您的代码中包含以下内容:

$fname = mysql_real_escape_string(isset($_POST['fname']));
isset()
返回布尔值true或false,而不是实际值本身。
因此,本质上,您只需执行以下操作:

$fname = mysql_real_escape_string(1);
从:

返回值

返回TRUE如果var存在且值不是NULL,FALSE 否则


您的代码中包含以下内容:

$fname = mysql_real_escape_string(isset($_POST['fname']));
isset()
返回布尔值true或false,而不是实际值本身。
因此,本质上,您只需执行以下操作:

$fname = mysql_real_escape_string(1);
从:

返回值

返回TRUE如果var存在且值不是NULL,FALSE 否则

分解它-

转义字符串以使其安全(r)

我们有去市区的邮局吗

这将返回1表示是,0表示否

但你并没有真正得到价值

$fname = mysql_real_escape_string(isset($_POST['fname']) == 1 ? $_POST['fname'] : ""));
这将检查它是否已设置-如果将$city设置为post值,则输入一个空白值(?与if语句类似:与else类似)

接受阿比克·查克拉博蒂的回答-不想狙击他只是想告诉你如何修复它

分解它-

转义字符串以使其安全(r)

我们有去市区的邮局吗

这将返回1表示是,0表示否

但你并没有真正得到价值

$fname = mysql_real_escape_string(isset($_POST['fname']) == 1 ? $_POST['fname'] : ""));
这将检查它是否已设置-如果将$city设置为post值,则输入一个空白值(?与if语句类似:与else类似)


接受阿比克·查克拉博蒂的回答-不想狙击他只是想告诉你如何修复它

不再支持
mysql.*
函数,它们不再维护,将来也会维护。您应该使用或更新代码,以确保将来项目的功能。这意味着我使用的代码不再有效?那么,数字1是从哪里来的?不,这并不意味着。这意味着
mysql.*
函数已被弃用,您不应该再使用它了。这与实际问题无关
1
isset()返回的值。它与
TRUE
相同。类似地,
0
意味着
FALSE
。不再支持
mysql.*
函数,它们不再维护,将来也将继续使用。您应该使用或更新代码,以确保将来项目的功能。这意味着我使用的代码不再有效?那么,数字1是从哪里来的?不,这并不意味着。这意味着
mysql.*
函数已被弃用,您不应该再使用它了。这与实际问题无关
1
isset()返回的值。它与
TRUE
相同。类似地,
0
意味着
FALSE
。是的,如果您想在分配这些POST变量之前检查它们是否已设置,那么应该这样做:if(isset($\u POST['fname']){$fname=mysql\u real\u escape_string($\u POST['fname'])Hi我离开
isset()
,并尝试使用三元运算符,成功。谢谢大家。祝你们好运如果你们想在分配这些POST变量之前检查它们是否被设置好,你们应该这样做:如果(isset($\u POST['fname']){$fname=mysql\u real\u escape\u string($\u POST['fname']);}嗨,我离开
isset()
并尝试使用三元运算符,成功了。谢谢大家。祝你好运。嗨,格雷厄姆,谢谢你的建议。我使用三元运算符,但没有
==1
,我的问题解决了-我总是使用基本运算符(ish)-没有仅仅用于显示逻辑的==1,完全正确!很高兴这有帮助-祝你好运!嗨,格雷厄姆,谢谢你的建议。我使用三元运算符,但没有
==1
,我的问题解决了-我总是使用基本运算符(ish)-没有使用的==1,这是完全正确的