2015-07-04 9 views
1

У меня было небольшое немного php/mysql, работающее в конце вызова AJAX, который обновляет таблицу. Теперь мне нужно изменить это обновление, чтобы ЧАСТЬ сообщения обновляла одну таблицу, а другая часть обновляла другую таблицу. Я не понимаю, как это сделать правильно. Это код, как к тому, что я имел работать на сегодняшний день:обновление двух таблиц в одном запросе mysql

if(isset($_POST['p2From'])) { 
    $userInput = $_POST['p2From']; 
    if(trim($userInput) == "") { $userInput = NULL; } 
    try { 
     $stmt = $conn->prepare("UPDATE $database.app_$applicationKey SET `p2From` = :userinput, `lastModified` = :time WHERE `appID` = :appid"); 
     $stmt->bindParam(':userinput', $userInput, PDO::PARAM_STR, 8); 
     $stmt->bindParam(':time', time(), PDO::PARAM_INT, 11); 
     $stmt->bindParam(':appid', $appID, PDO::PARAM_INT, 11); 
     $stmt->execute(); 
    } catch(PDOException $e) { catchMySQLerror($e->getMessage()); } 
} 

То, что я хочу сделать, это эффективно достичь этого:

if(isset($_POST['p2From'])) { 
    $userInput = $_POST['p2From']; 
    if(trim($userInput) == "") { $userInput = NULL; } 
    try { 
     $stmt = $conn->prepare("UPDATE $database.app_AIGtabs SET `p2From` = :userinput WHERE `appID` = :appid"); 
     $stmt->bindParam(':userinput', $userInput, PDO::PARAM_STR, 8); 
     $stmt->bindParam(':appid', $appID, PDO::PARAM_INT, 11); 
     $stmt->execute(); 
    } catch(PDOException $e) { catchMySQLerror($e->getMessage()); } 
} 

И

if(isset($_POST['p2From'])) { 
    $userInput = $_POST['p2From']; 
    if(trim($userInput) == "") { $userInput = NULL; } 
    try { 
     $stmt = $conn->prepare("UPDATE $database.app_$applicationKey SET `lastModified` = :time WHERE `appID` = :appid"); 
     $stmt->bindParam(':time', time(), PDO::PARAM_INT, 11); 
     $stmt->bindParam(':appid', $appID, PDO::PARAM_INT, 11); 
     $stmt->execute(); 
    } catch(PDOException $e) { catchMySQLerror($e->getMessage()); } 
} 

Однако я бы например, для того, чтобы добиться этого в одном запросе обновления, а не в двух. Я уверен, что это возможно, хотя я не совсем понимаю, как это выполнить в одном запросе mysql. Может ли кто-нибудь показать мне, как это сделать?

ответ

0

Используйте Multiple стол Синтаксис Update: https://dev.mysql.com/doc/refman/5.6/en/update.html

if(isset($_POST['p2From'])) { 
    $userInput = $_POST['p2From']; 
    if(trim($userInput) == "") { $userInput = NULL; } 
    try { 
     $stmt = $conn->prepare(" 
      UPDATE $database.app_$applicationKey 
      JOIN $database.app_AIGtabs on $database.app_$applicationKey.`appID` = $database.app_AIGtabs.`appID` 
      SET `lastModified` = :time, `p2From` = :userinput 
      WHERE $database.app_$applicationKey.`appID` = :appid;"); 
     $stmt->bindParam(':userinput', $userInput, PDO::PARAM_STR, 8); 
     $stmt->bindParam(':time', time(), PDO::PARAM_INT, 11); 
     $stmt->bindParam(':appid', $appID, PDO::PARAM_INT, 11); 
     $stmt->execute(); 
    } catch(PDOException $e) { catchMySQLerror($e->getMessage()); } 
} 
+0

ANSI ПРИСОЕДИНЯЙСЯ синтаксис является предпочтительным – Barmar

+0

Спасибо machee, что работал отлично только один небольшое изменение требуется - двойные кавычки должны были вместо одного внутри подготовить заявление , :) – Cassandra

Смежные вопросы