| Autor | Zpráva | ||
|---|---|---|---|
| lionel messi Profil |
#1 · Zasláno: 10. 2. 2014, 20:56:12
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 |
#2 · Zasláno: 10. 2. 2014, 22:44:29
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 |
#3 · Zasláno: 12. 2. 2014, 10:41:28
Davex:
Jasné, ale ani úprava skriptu nezmení jeho funkčnosť. |
||
|
Časová prodleva: 4 dny
|
|||
| lionel messi Profil |
#4 · Zasláno: 16. 2. 2014, 12:24:55
Reagujem na Davexa:
Tak predsa bol pes zakopaný aj v neescapovaní, ale bol tam ešte jeden problém s úvodzovkami, vďaka! |
||
|
Časová prodleva: 12 let
|
|||
0