在一些IF ELSE测试之后,从String更改为Integer的变量

时间:2013-11-15 14:57:39

标签: php mysqli

我遇到了问题而无法找到解决方案。 在html帖子后,我有一个正确分配为用户的变量选择“M”或“F”。 对不起,如果来源写得不好,这是我第一次编码!!

HTML:

<select style="width:75px;" name="sesso" multiple>
    <option value="m">Male</option>
    <option value="f">Female</option>
</select>

以下是我发现问题的PHP代码的一部分:

$reg_nome = strip_tags($_POST['nome']);
$reg_username = strip_tags($_POST['username']);
$reg_password = strip_tags($_POST['password']);
$reg_passwordck = strip_tags($_POST['passwordck']);
$reg_sesso = strip_tags($_POST['sesso']);
$reg_data = date("Y-m-d");
$uomo = "m";
$donna = "f";

这里有效。打印变量$reg_sesso是正确的“M”或“F”。

echo "sesso = $reg_sesso";
$stmt = $mysqli->prepare("SELECT username FROM users WHERE username= ?");
$stmt->bind_param('s', $reg_username);
$stmt->execute();
$stmt->bind_result($query_username);
$stmt->store_result();
$n_row = $stmt->num_rows;
$stmt->close();
if ($n_row==1)  //check if the user exists
{                 
    echo "L'utente $reg_username è già registrato";
}
else {
        if (preg_match("#.*^(?=.{8,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$#", $reg_password)) //check if password is ok
        {

        if($reg_password==$reg_passwordck) //check if two pass are the same
        {

        if($reg_sesso=$uomo||$reg_sesso=$donna) //se è stato inserito M o F
        {
            echo " sesso= $reg_sesso ";

            // Here $reg_sesso is 1 not "M" or "F"

            $password_sha1=(sha1($reg_password));
            $stmt = $mysqli->prepare("INSERT INTO users (nome,username,password,data,sesso) VALUES (?,?,?,?,?)");
            $stmt->bind_param('sssss', $reg_nome, $reg_username, $password_sha1, $reg_data, $reg_sesso);
            $stmt->execute();
            $stmt->close();
            movePage(301,"login.php");
            exit;

1 个答案:

答案 0 :(得分:4)

您正在分配,而非比较。使用==来比较值。