簡體   English   中英

SQL UPDATE查詢可通過MySQL Workbench正確執行,但不能通過PHP執行

[英]SQL UPDATE query executes correctly via MySQL Workbench but not via PHP

我有以下SQL查詢:

UPDATE uploads SET UserName='Test2', UserEmail='Test2', UploadCount='4' 
WHERE Country = 'Algeria'

當我通過My​​SQL工作台運行此查詢時,它執行得很好。

我試圖通過網站/ PHP運行此程序,並嘗試以以下方式執行查詢:

$sql = "UPDATE uploads SET UserName='$user_data[name]', UserEmail='$user_data[email]', UploadCount='$user_data[FilesUploaded]' WHERE Country = '$country'";


echo $sql;  
    try 

    {
    $pdo = new PDO('mysql:host=localhost; dbname=db01', $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->prepare($sql);
    $stmt->execute();       

  # Affected Rows?
      echo $stmt->rowCount(); // 1
    } catch(PDOException $e) {
      echo 'Error: ' . $e->getMessage();
    }

SQL查詢是通過此處的變量構建的,但是我將$ sql的回顯復制/粘貼到工作台中以檢查是否沒有語法錯誤蔓延,$ sql的回顯就是我上面粘貼的內容。

當我通過Web應用程序運行它時,受到0行的影響,並且未進行UPDATE,我在哪里出錯?

謝謝

更新:PDO的新參數化版本:

$sql =  "UPDATE uploads SET ";

$sql .="UserName = :name, 
        UserEmail = :email, 
        UploadCount = :FilesUploaded";

$sql .=" WHERE Country = '$country'";

    try     
    {
    $pdo = new PDO('mysql:host=localhost; dbname=db01', $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->prepare($sql);

    $stmt->bindParam(":name", $user_data['name']);
    $stmt->bindParam(":email", $user_data['email']);
    $stmt->bindParam(":FilesUploaded", $user_data['FilesUploaded']);

    $stmt->execute();       

  # Affected Rows?
      echo $stmt->rowCount(); // 1
    } catch(PDOException $e) {
      echo 'Error: ' . $e->getMessage();
    }

看起來您正在嘗試使用引號將數組中的信息插入。 嘗試這個:

$sql = "UPDATE uploads SET UserName='".$user_data['name']."', UserEmail='".$user_data['email']."', UploadCount='".$user_data['FilesUploaded']."' WHERE Country = '$country'";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM