Autor Zpráva
lionel messi
Profil
Zdravím,

snažím sa v PHP napísať nejaké hromadné vkladanie do DB, kt. by vložilo obsah všetkých súborov v danej zložke, narážam však na problém:

<?php
// viem, že extenzia mysql_* je zastaraná, ale v tejto chvíli je to jedno
        mysql_connect("localhost", "root", "");
        mysql_select_db("analyzy");
        mysql_set_charset("cp1250");

//univerzálna funkcia na pitvanie titulku
function ziskajTitulok ($clanok)
{
    $obsah = file_get_contents($clanok);
    $regular = "~(.*)(<title>)(.*)(</title>)(.*)~s";
    $titulok = preg_replace($regular, "\\3", $obsah);
    return $titulok;
}

//univerzálna funkcia na pitvanie obsahu
function ziskajObsah ($clanok)
{
    $obsah0 = file_get_contents($clanok);
    $regular = "~(.*)(<p>)(.*)(</p>)(.*)~sU";
    $obsah = preg_replace($regular, "\\3", $obsah0);
    $obsah2 = strip_tags(preg_replace("~<\?php.*~s", "", $obsah));
    return $obsah2;
}

//univerzálna funkcia na vkladanie do databázy
function ulozDoDatabazy ($clanok = "")
{
  //na skúšku s uvedeným argumentom - vloží jeden súbor a funguje
    if (!empty($clanok))
    {
        $titulok = ziskajTitulok($clanok);
        $obsah = ziskajObsah($clanok);
        mysql_query("INSERT INTO analyzy(id, url, titulok, text) VALUES (NULL, '$clanok', '$titulok', '$obsah')") or die(mysql_error());
    }
     //hromadné vkladanie
    else
    {
        $pole = glob("*.php");
        foreach ($pole as $subory)
        {
            $clanok = $subory;
            $titulok = ziskajTitulok($clanok);
            $obsah = ziskajObsah($clanok);
            mysql_query("INSERT INTO analyzy(id, url, titulok, text) VALUES (NULL, '$subory', '$titulok', '$obsah')") or die(mysql_error());
        }
    }
    
}
ulozDoDatabazy();
?>

Označená časť (t. j. else) my hádže nasledovný error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'localhost', 'root', '') or die (mysql_error($db)); my' at line 1 a pritom mi to nedáva žiadny zmysel, prihlasovacie údaje sú predsa v poriadku a spoločné pre obe verzie, if navyše funguje tak ako má.

Ďakujem veľmi pekne za každú pomoc.
Davex
Profil
Data bys měl před uložením do databáze vhodně ošetřit, aby neobsahovala speciální a potencionálně nebezpečné znaky, tedy použít mysql_real_escape_string().
lionel messi
Profil
Davex:
Jasné, ale ani úprava skriptu nezmení jeho funkčnosť.
lionel messi
Profil
Reagujem na Davexa:
Tak predsa bol pes zakopaný aj v neescapovaní, ale bol tam ešte jeden problém s úvodzovkami, vďaka!

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: