Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz Jim-Y #1071 üzenetére

    "Más" utáni részre reagálva:

    A PDO exec() függvényét használod itt? Vagy ez saját wrapper osztály?
    Ha a PDO-é, akkor azonnal felejtsd el, hogy exec() metódus használatával közvetlenül beleraksz felhasználótól érkező adatot. Meg nem ártana, ha kivételeket kezelnél.
    Nem is értem, pont az a lényege a PDO-nak, hogy szépen lehet vele az adatokat kezelni, prepared statementeket lehet vele használni, így escape-elgetni sem kell a karaktereket, épp ez az egyik legjobb benne, de a másik pedig az előkészített query által megvalósítható szép kód - nincs szükség okádék string-összefűzögetésre, mint - bocs - a Te kódodban. :D

    Tele von Zsinór kolléga a PHP topicban belinkelte a saját cikkét a témában, ami elég jól összefoglalja a dolgot:
    http://maerlyn.eu/2011/12/03/pdo.html

    Tehát
    $db->exec("INSERT INTO offers (offer_id,description,images) VALUES ('$provider_id','$htmlcontent', '".$_FILES['uploaded_image']['name']."');");
    FELEJTŐS, HELYETTE:

    $dbh = NULL;

    try {
    // felhasználónév, jelszónál saját adat behelyettesítendő
    $dbh = new PDO("mysql:host=localhost;dbname=test", "root", "root", array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;',
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ));


    // ..............

    $sth = $dbh->prepare('INSERT INTO offers (offer_id,description,images) VALUES (:offer_id, :description, :images)');

    $sth->bindParam(':offer_id', $provider_id, PDO::PARAM_INT);
    $sth->bindParam(':description', $htmlcontent, PDO::PARAM_STR);
    $sth->bindParam(':images', $_FILES['uploaded_image']['name'], PDO::PARAM_STR);
    $sth->execute();

    echo 'Úgy tűnik, minden OK.';
    }
    catch (PDOException $err) {
    echo 'Hiba: ', $e->getMessage();
    }
    catch (Exception $e) {
    echo 'Másik hiba: ', $e->getMessage();
    }

    Itt feltételeztem, hogy az offer_id egy INT.
    Meg természetesen a kivételeket inkább naplózni kéne, és felhasználóbarát üzeneteket kiírni.

    Ja, és a fentivel nagy eséllyel kerülhető el az általad említett probléma.
    Legalábbis remélem. Majd írd meg, mire jutottál.

  • martonx

    veterán

    válasz Jim-Y #1071 üzenetére

    Nem értelek. Minden adott a problémád megoldásához, a megoldásokat leírtam/leírtuk, de te nem csinálod meg. Mit vársz tőlünk? Menjünk át hozzád, és helyetted rakjunk fel egy Toad for Mysql-t, majd rakjuk fel az sql dumpot a lokális gépedre, és szépen nézegessük át veled az egészet? Majd magyarázzuk el, és simogassuk meg a buksidat?

Új hozzászólás Aktív témák