php
  • sql
  • 2013-09-19 6 views -6 likes 
    -6

    Мне было интересно, есть ли способ проверить, успешно ли выполнен запрос на обновление, иначе я буду выполнять запрос на вставку.SQL, PHP update query

    $record = mysql_query("update table set a='$b', b='$c' where id = '$id' "); 
    echo $record; // returns always 1; 
    

    Thank you.

    +0

    Вы должны иметь код PHP вне кавычек. Попробуйте эту '$ record = $ mysql_query (" таблица обновлений set a = '". $ B."', B = '". $ C."' Где id = '". $ Id".' "); ' –

    +0

    О, я пробовал это, но его не работает !!, но спасибо за помощь! – Pooja

    +0

    Использование подготовленных заявлений поможет решить вашу проблему. ** При создании SQL-операторов с внешними переменными вы полностью открываете атаки SQL-инъекций. ** Кроме того, любые входные данные с одинарными кавычками в нем, такие как имя «O'Malley», взорвут ваш SQL-запрос , Пожалуйста, узнайте об использовании параметризованных запросов, желательно с модулем PDO, для защиты вашего веб-приложения. У http://bobby-tables.com/php есть примеры, чтобы вы начали, и [этот вопрос] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) имеет много примеров. –

    ответ

    4

    Используйте функцию mysql_affected_rows, чтобы найти количество затронутых записей. См. Следующий код.

    $record = mysql_query("update table set a='$b', b='$c' where id = '$id' "); 
    $total_rows = mysql_affected_rows($conn); 
    echo $total_rows; 
    

    где $ сопп является объект подключения

    +0

    Спасибо, сработало :) – Pooja

    2

    Это будет как

    $records = mysql_query("UPDATE `table` SET a='$b', b='$c' WHERE id = '$id' "); 
    $affected_rows = mysql_affected_rows($records); 
    if($affected_rows >= 1) { 
        echo "Updated ".$affected_rows." rows"; 
    } 
    

    Нужен удалить $ перед тем mysql_query й считает, что table вашего имени таблицы, а также Makesure, что подключение к БД активного.

    И старайтесь избегать mysql_* заявления из-за всей ext/mysql PHP расширения, который обеспечивает все функции, названные с приставкой mysql_*, является официально устаревшим PHP v5.5.0 и будет удален в будущем.

    Есть два других MySQL расширений, которые можно лучше использовать: MySQLi и PDO_MySQL, любой из которых может быть использован вместо ext/mysql.

    +1

    прямо сейчас я не хочу использовать mysqli & pdo_mysql Мне нужно какое-то простое решение в mysql! Спасибо за помощь!! – Pooja

    +0

    Я только что предложил только .... считаю, что я дал решение в 'mysql' только @Pooja – Gautam3164

    +0

    Попробуйте мое редактирование .... – Gautam3164

    1

    Попробуйте это ... Она возвращает количество измененных строк в последнем прогоне запроса.

    $Rows = mysql_affected_rows($record). 
    

    пример $ Ряды = 1, 2, 3 и т.д. ......

    mysql_query(): how to check whether any rows are updated in case of UPDATE SQL

    1

    mysql_affected_rows() является то, что вам нужно.

    Docs: http://php.net/manual/en/function.mysql-affected-rows.php

    mysql_query("UPDATE mytable SET used=1 WHERE id < 10"); 
    if (mysql_affected_rows() > 0) { 
        echo 'You updated '.mysql_affected_rows(). 'rows.'; 
    } else { 
        echo 'Nothing updated'; 
    } 
    
    Смежные вопросы