Обновление БД не работает - PullRequest
1 голос
/ 05 марта 2012

Привет, я использую PDO для обновления некоторых полей базы данных MySQL.Я написал класс с именем "bakeIT", который подключается к БД и обновляет некоторые поля в зависимости от параметров метода simple_update().

Каким-то образом первый вызов экземпляра для BakeIT()->simple_update() работает, но невторой?Это почему?Я действительно схожу с ума от этого ...

Редактировать: Я обнаружил некоторые ошибки:

string (85) "SQLSTATE [28000] [1045] Доступ запрещен для пользователя'ODBC' @ 'localhost' (используя пароль: NO) "Неустранимая ошибка: вызов функции-члена prepare () для необъекта в BakeIT.php

Таблица выглядит следующим образом:enter image description here

class BakeIT {

    function simple_update(
    $tablename,
    $fieldname,
    $value,
    $id,
    $idname,
    $token,
    $tokenvalue){

        $conn=$this->connect_db();
        $sql= "UPDATE $tablename SET $fieldname=? WHERE $idname=? AND $token=?";
        $q = $conn->prepare($sql);
        $q->execute(array($value,$id,$tokenvalue));
        $conn = null;}
}


//This as the first query works!        
$saveanchor = new BakeIT();
$saveanchor->simple_update('navigation','anchor','whoo',5,'idnavigation','hash','3234'); 

//This as the second query not!    
$savetitle = new BakeIT();
$savetitle->simple_update('navigation','linkname','kawoom',5,'idnavigation','hash','3234');

Ответы [ 2 ]

1 голос
/ 05 марта 2012

хорошо, я понял!Это require_once для внешних данных доступа к базе данных.только с «require» data.php (скрипт с переменными db-access) все работает нормально ...

Спасибо за помощь!

1 голос
/ 05 марта 2012

Поле linkname не существует.

На мой комментарий о безопасности: Пока я знаю, что готовое изменение состояния не позволяет злоумышленнику ввести какие-либо неверные значения в содержимое поля.1005 *

Невозможно манипулировать параметрами $value и $condition, но вы можете установить $tableid в 1=1 --, что приведет к переопределению вашей полной таблицы.выполните это здесь:

UPDATE table SET somefield=12 WHERE 1=1 --=34
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...