Php 可变变量

Php 可变变量,php,mysql,Php,Mysql,这是我闹鬼的密码 ini_set("display_errors", true); ini_set("html_errors", false); require "conn.php"; echo "debug 1"; $stmt2 = $conn->prepare("SELECT * FROM UserData WHERE username = ?"); $stmt2->bind_param('s',$username); //$username = $_POST["usernam

这是我闹鬼的密码

ini_set("display_errors", true);
ini_set("html_errors", false); 
require "conn.php";
echo "debug 1";
$stmt2 = $conn->prepare("SELECT * FROM UserData WHERE username = ?");
$stmt2->bind_param('s',$username);
//$username = $_POST["username"];
$username ="netsgets";
$stmt2->execute();
$stmt2->store_result(); 
if ($stmt2->num_rows == 0){ // username not taken
echo "debug 2.5";

die;
}else{
// prepare query
$stmt=$conn->prepare("SELECT * FROM UserData WHERE username = ?");
// You only need to call bind_param once
$stmt->bind_param('s',$username);
$username = "netsgets";
// execute query
$stmt->execute(); 
$stmt->store_result();  
// bind variables to result
$stmt->bind_result($id,$dbUser,$dbPassword,$Type1,$Type2,$Type3,$Type4,$Type5);
//fetch the first result row, this pumps the result values in the bound variables

if($stmt->fetch()){
    echo 'result is ' . $Type1, $Type2,$Type3,$Type4,$Type5;
}


//var_dump($query2);
echo "hi";

echo "debug 2";



echo "debug 2.7";

    if ($Type1 == "empty"){

        echo "debug 3";
        $sql11 = $conn->prepare("UPDATE UserData SET likedOne=? WHERE username=?");
        $sql11->bind_param('ss',$TUsername,$Username);
//      $TUsername = $_POST["TUsername"];
//      $Username = $_POST["username"];
        $TUsername = "test";
        $Username = "netsgets";
        $sql11->execute();



    } 
}
这是它返回的内容(回声)

如您所见,变量Type1、Type2、Type3、Type4、Type5都等于“empty”。 由于某些原因,如您所见,if语句不认为它是“空的”,因为它没有响应“debug 3”。什么。。。。。(也没有错误。)

如果此代码

echo 'result is ' . $Type1, $Type2,$Type3,$Type4,$Type5;
从字面上产生这个输出

结果是空的

如果每个“空”之间都有空格,那么数据库中的
类型*
值显然都是
空的
空的
或其他带有前导/尾随空格的组合

您将要与进行比较

trim($Type1) == 'empty'

此外,如评论中所述,从不
选择*
绑定结果
结合使用。对于所选列以及它们的显示顺序,您应该始终明确,例如

SELECT id, dbUser, dbPassword, Type1, Type2, Type3, Type4, Type5 FROM ...

您没有在任何地方声明$Type1等。$stmt->bind_result($id、$dbUser、$dbPassword、$Type1、$Type2、$Type3、$Type4、$Type5);不是吗?如果是这样,为什么我可以打印它的值?你必须给这些变量赋值$Type1=“某物”//当然,直到您添加或删除列,或者您的数据库决定更改顺序
SELECT id, dbUser, dbPassword, Type1, Type2, Type3, Type4, Type5 FROM ...