2017-08-09 62 views
0

此代碼應檢查LikedOne的行交叉點與用戶名爲jim的行的行是否等於文本「空」。在表保存問題中更改值

$stmt1 = $conn->prepare("SELECT likedOne FROM UserData WHERE username = ?"); 
    $stmt1->bind_param('s',$username); 
    //$username = $_POST["username"]; 
    $username ="jim"; 
    $stmt1->execute(); 
    $stmt1->store_result(); 

    $res = $stmt1->fetch(); 

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


      } 

第一次它確實改變它來測試,但隨後還是打印調試3這意味着它仍然登記在$資源爲「空」,即使它應該是「測試」。

編輯不工作!

$stmt1 = $conn->prepare("SELECT likedOne FROM UserData WHERE username = ?"); 
    $stmt1->bind_param('s',$username); 
    //$username = $_POST["username"]; 
    $username ="jim"; 
    $stmt1->execute(); 
    $stmt1->bind_result($res); 
    $found_row = $stmt1->store_result(); 
if ($found_row && $res == "empty"){ 
     echo "debug 3"; 
     $sql = $conn->prepare("UPDATE UserData SET likedOne=? WHERE username=?"); 
     $sql->bind_param('ss',$TUsername,$Username); 
//  $TUsername = $_POST["TUsername"]; 
//  $Username = $_POST["username"]; 
     $TUsername = "test"; 
     $Username = "jim"; 
      $sql->execute(); 
} 
+0

你綁定他們後聲明你的變量... – Naruto

+0

@Naruto和?這很好。在綁定它們之前,不需要聲明變量。 – Twinfriends

+0

那麼它是什麼問題,它認爲它的「空」仍然是「測試」 –

回答

0

$stmt1->fetch()不返回likedOne列的內容。如果返回一行,則返回TRUE;如果結果集中沒有更多行,則返回NULL;如果發生錯誤,則返回FALSE

要檢索準備好的語句返回的數據,您需要使用$stmt1->bind_result()

$stmt1 = $conn->prepare("SELECT likedOne FROM UserData WHERE username = ?"); 
$stmt1->bind_param('s',$username); 
//$username = $_POST["username"]; 
$username ="jim"; 
$stmt1->execute(); 
$stmt1->bind_result($res); 
$found_row = $stmt1->store_result(); 

if ($found_row && $res == "empty") { 
    ... 
} 

我不確定爲什麼你的代碼沒有這樣做,但沒有必要做兩個查詢,你可以在一個。

$sql = $conn->prepare("UPDATE UserData SET likedOne=? WHERE username=? AND likedOne = 'empty'"); 
$sql->bind_param('ss',$TUsername,$Username); 
//$TUsername = $_POST["TUsername"]; 
//$Username = $_POST["username"]; 
$TUsername = "test"; 
$Username = "jim"; 
$sql->execute(); 
+0

當我var轉儲$ res它說空NULL –

+0

'$ found_row'呢? – Barmar

+0

bool(true)..... –