如何将名称转换为id并将其作为PHP中的id保存到数据库?

时间:2015-11-01 09:45:22

标签: php database login

我在PHP中制作简单的邮件系统。

我用了两张桌子:

  
      
  1. 用户表
  2.   
  3. 消息表
  4.   

我使用了来自users表的登录并且也使用了会话。 使用id消息发送消息时正在发送。但是,当我在" mto"中使用他们的名字时它自动占用0 id ..

有人可以回答我吗?

撰写按钮代码:

<a  class="btn btn-block btn-compose btn-lg" id="loginButton"><i class="fa fa-" ></i> Compose Mail </a>
        <!-- The login modal. Don't display it initially -->
        <form id="loginForm" method="post" class="form-horizontal" style="display: none;">
            <div class="form-group">
                <label class="col-xs-3 control-label">To</label>
                <div class="col-xs-5">
                    <input type="hidden" class="form-control" name="from" />
                </div>
                <div class="col-xs-5">
                    <input type="text" class="form-control" name="to" value="<?php echo 'name' ?>"/>
                </div>
            </div>
            <div class="form-group">
                <label class="col-xs-3 control-label">Subject</label>
                <div class="col-xs-5">
                    <input type="text" class="form-control" name="ssubject" />
                </div>
            </div>

            <div class="form-group">
                <label class="col-xs-3 control-label">Message</label>
                <div class="col-xs-5">
                    <textarea name="smessage" class="form-control"></textarea>
                </div>
            </div>

            <div class="form-group">
                <div class="col-xs-5 col-xs-offset-3">
                    <button type="submit" class="btn btn-default">Send</button>
                </div>
            </div>
        </form>

messages table

enter image description here enter image description here

用户ID与消息表的字段链接。 compose

如果我们输入id然后它需要id,但我想从用户名取名,并将id存储在消息表中。

请帮帮我。

<?php
include('../session.php');
$from="$session_id";
$to=mysql_real_escape_string($_POST["to"]);
$subject=mysql_real_escape_string($_POST["ssubject"]);
$message=mysql_real_escape_string($_POST["smessage"]);
if($from==$to){
    echo "Message could not be sent";
    die();
}
if($from>1 && $to>1){
    echo "Message could not be sent";
    die();
}



//echo $to.$message;
//validate before insert
if(strlen($subject)>50){
    echo "Subject was too long";
    die();
}
if(strlen($message)>150){
    echo "Message was too long";
    die();
}
include('../dbsource.php');
$mysqli=connect();

if(insert($mysqli,$from,$to,$subject,$message)>0)

{
    echo "<script type=\"text/javascript\">".
        "alert('Message was successfully sent');".
        "</script>";
   // $result='<div class="alert alert-success">Thank You! I will be in touch</div>';


    }
else
{
    echo "<script type=\"text/javascript\">".
        "alert('there was error sending message.. please try it later');".
        "</script>";

}
?>


<?php
function insert($mysqli,$from,$to,$subject,$message){   
    $mdate=date('Y-m-d');
    $mtime=date('H:i:s');   
    $query = "INSERT INTO messages (mfrom,mto,subject,message,mdate,mtime)".
        "VALUES ('$from','$to','$subject','$message','$mdate','$mtime')";
    if($mysqli->query($query)>0)
        return($mysqli->insert_id);
    else
        return 0;
}
?>

1 个答案:

答案 0 :(得分:0)

但是当我在“mto”字段中使用该名称时,它会自动获取0 id - 这是因为mto字段有int类型,你不能在int类型中存储字符,如果你想存储名称,可以将它改为varchar。然而,然后存储您可以与用户表建立关系的名称,这是一种更好的方式。