2011-10-16 17 views
0

我的第一個查詢是這樣的:查詢將不會更新,使用PHP PDO

$sql = "UPDATE application SET userid = ? WHERE appid = ? LIMIT 1"; 

我的第二個查詢是這樣的:

SELECT user.name,application.appid,application.userid,application.created,application.title,application.filesize,application.status,application.apptype 
FROM user,application 
WHERE application.appid = ? LIMIT 1 

然後第二個查詢使用存儲$statement->fetchObject()

問題是$statement->name總是bobapplication.userid是表user中的userid的外鍵。如果我更改表application中的userid,可以說10,則查詢2應該從新的userid上的表user獲得名稱,但問題是它一直告訴我$statement->namebob

if (isset($_POST['newowner'])) 
{ 
    $newowner = $_POST['newowner']; 
    $sql = "SELECT COUNT(*) FROM user 
      WHERE userid = ? LIMIT 1"; 
    $statement = $db->prepare($sql); 
    $statement->execute(array($newowner)); 

    if ($statement->fetchColumn() > 0) 
    { 
     $sql = "UPDATE application SET userid = ? 
       WHERE appid = ? LIMIT 1"; 
     $statement = $db->prepare($sql); 
     $statement->execute(array($newowner,$_GET['appid'])); 
     $appdetail->msg = "Owners were successfully changed."; 
     $appdetail->type = "success"; 
    } 
    else 
    { 
     $appdetail->msg = "Could not find client by that userid or email."; 
     $appdetail->type = "warning"; 
    } 
} 
$sql = "SELECT user.name,application.appid,application.userid,application.created,application.title,application.filesize,application.status,application.apptype 
     FROM user,application 
     WHERE application.appid = ? LIMIT 1"; 
$statement = $db->prepare($sql); 
$statement->execute(array($_GET['appid'])); 
$app = $statement->fetchObject(); 

回答

0

使用PDO,您應該能夠確定有多少行受UPDATE影響。檢查它是否與您希望在測試數據中修改的行數相對應。編輯:this是您需要的聲明。

+0

該行正在更新。我通過phpmyadmin進行了檢查。 – user962449

+0

另外兩種可能性:您的PHP代碼存在錯誤(我們可以看到它嗎?),或者您正在事務中操作並需要首先提交(如果您在phpmyadmin中修改了行,您的選擇會發生變化嗎?)。我的猜測是這是第一例。 – halfer

+0

*增加了 其餘的代碼只是輸出。沒有語法錯誤。 – user962449