Обновление с PDO php не производится - PullRequest
0 голосов
/ 15 ноября 2018

У меня проблема без ошибок в моем коде, который обновляет строку ..

if(!isset($error)){

    try {
        $sql = "UPDATE `invoice` SET `client`='".$client."', `company`='".$company."' , `clientemail`='".$clientemail."' , `mobailclient`='".$mobailclient."' , `startdate`='".$startdate."' , `enddate`='".$enddate."' WHERE `id` ='".$id."'";

        $count = $db->exec($sql);


        //redirect to invoice page
        header('Location: invoice.php');
        exit;

    //else catch the exception and show the error.
    } catch(PDOException $e) {
        $error[] = $e->getMessage();
    }

}

Это мой код, я пытаюсь получить переменную $sql и перейти к mysql phpmyadmin и его работа работает хорошо, но в файле не работает, и я не получаю никакой ошибки

==== Обновление ====

я пытаюсь это и не работает

    try {
        $sql = 'UPDATE invoice SET client = :client,  company = :company,  clientemail = :clientemail,  mobailclient = :mobailclient,  startdate = :startdate,  enddate = :enddate WHERE id = :id';

        $statement = $db->prepare($sql);
        $statement->bindParam(":client", $client);
        $statement->bindParam(":company", $company); 
        $statement->bindParam(":clientemail", $clientemail); 
        $statement->bindParam(":mobailclient", $mobailclient); 
        $statement->bindParam(":startdate", $startdate); 
        $statement->bindParam(":enddate", $enddate); 
        $statement->bindParam(":id", intval($_GET['id']) ); 
        $statement->execute();
        if($statement->rowCount() > 0) // will return 1 if any row is updated
        {
            echo "<script>alert('".$statement->rowCount()."')</script>";
        }
        else
        {
            echo "<script>alert('No record updated')</script>";
        }

1 Ответ

0 голосов
/ 15 ноября 2018

Ваш запрос открыт для SQL-инъекций. Вам следует использовать параметризованный запрос, который обеспечивает своего рода защиту от внедрения SQL, но не обеспечивает 100% защиты. Пожалуйста, посетите этот Пост для более подробной информации.

Попробуйте следующий код, заменив имена таблиц и столбцов.

$client = "my name";
$company = "my-company";
$id= 2;//make sure your table has a record with that specific id
$sql = 'UPDATE invoice SET client = :client,  company = :company WHERE id = :id'; // here i am updating only two columns
//You can add more column that you want to upate like ColumnName = :ParameterIdentifier
//Where ParameterIdentifier Is the name of parameter used in bindParam as in my example company  
$statement = $db->prepare($sql);
$statement->bindParam("client", $client); //Binding parameter for client
$statement->bindParam("company", $company); //Binding parameter for company 
$statement->bindParam("id", $id); 
$statement->execute();
if($statement->rowCount() > 0) // will return 1 if any row is updated
{
    echo "Record updated successfully";
}
else
{
    echo "No record updated";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...