- Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
- Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
Hirdetés
-
Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
ph Az ASTRIA 600 ARGB ráadásul a hűtési teljesítmény szempontjából sem szégyenkezhet.
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Már tudjuk, hogy mikor jön az idei Xbox Games Showcase
gp A showt egy külön Direct előadás követi, ami szinte biztosan az idei Call of Duty lelepelzése lesz.
Aktív témák
-
sanyilpa18
csendes tag
sziasztok. hogyne lehetne megoldani hogy egy x weboldal postjait és egy teljes másik dizajnal rendelkezo y oldal postjait egy xy oldalon is töltse be. ugyanakkor egy regisztracioval mindhárom oldalon belehessen lépni. wordpress cms oldalról lenne szó... köszönöm aki segít
http://www.webgyar.com
-
papa019
senior tag
Sziasztok!
Egy bonyolultabb lekérdezést szeretnék megvalósítani, de már elég régen tanultam mysql-t és sehogy sem jön össze. A lényeg, hogy van két tábla: az egyik a places, amiben van egy id és egy category attribútum, a másik a categories, amiben van szintén egy id és egy level attribútum. A places category attribútuma a categories id-je.
A lekérdezéshez van egy place $id valtozóm a php kódban. Azt szeretném elérni, hogy azokat a placeeket jelölje ki a select, amiknek a level attribútuma kisebb, mint az adott place kategóriájának level attribútuma.[ Szerkesztve ]
-
Briganti
tag
válasz papa019 #2102 üzenetére
Probald ezt, nem igerem hogy a legoptimalisabb, de most hirtelen ez ugrott be
SELECT * FROM places p
LEFT JOIN category c ON p.category = c.id
WHERE c.level < (SELECT level FROM category WHERE id = $id)If debugging is a process of removing bug, then programming is a process of putting them in ...
-
papa019
senior tag
Köszönöm, de nekem place id van megadva. Viszont ez alapján már menni fog szerintem.
-
papa019
senior tag
válasz Briganti #2103 üzenetére
Még egy kérdésem lenne:
Ha csinálok egy ilyen kódot:$result = $DB->query("SELECT * FROM places WHERE id = '$parent_area')");
$result->setFetchMode(PDO::FETCH_COLUMN);
while($row = $result->fetch())
{
$has_parent=$row['parent_has_parent'];
}Akkor a PHP hibát ír ki:
SCREAM: Error suppression ignored for
( ! ) Fatal error: Call to a member function setFetchMode() on a non-objectA lekérdezés egyetlen sort ad ki eredményül, ennek az egyik attribútumából szeretnék változót létrehozni. Miért nem működik ez a megoldás, és mi lehet a helyes megoldás erre?
Ha így próbálom megoldani:
$result = $DB->query("SELECT parent_has_parent FROM places WHERE id = '$parent_area')");
$row = mysql_fetch_row($result);
echo 'alert('.$row[0].')';Akkor pedig az alábbi hiba van:
Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\wamp\www\ajaxPost.php on line 20
[ Szerkesztve ]
-
Briganti
tag
válasz papa019 #2105 üzenetére
Ezen a linken megnezheted hogy hol tevedtel
Ha nem josz ra akkor segitek
If debugging is a process of removing bug, then programming is a process of putting them in ...
-
papa019
senior tag
válasz Sk8erPeter #2109 üzenetére
A config.php:
try {
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch(PDOException $e)
{
echo $e->getMessage();
}Tudtommal ez PDO.
De a hibát továbbra sem értem.[ Szerkesztve ]
-
Briganti
tag
válasz Sk8erPeter #2109 üzenetére
adj egy var_dump -ot a $result valtozodnak, hogy nezd meg mit terit vissza a $DB->query() fugvenyed
If debugging is a process of removing bug, then programming is a process of putting them in ...
-
Sk8erPeter
nagyúr
válasz papa019 #2110 üzenetére
Akkor bocsánat, nem szóltam, csak ugyanúgy nézett ki a dolog, mint korábban, konkatenáltad, ugyanaz a változónév, stb., ezért hittem azt, hogy ugyanazt a saját osztályt használod, mint korábban.
Ha PDO-t használsz, akkor onnantól - szerencsére - a mysql_ kezdetű függvények megszűntek létezni!! Thank God!
Tehát pl. a mysql_fetch_row() használatát felejtsd el innentől örökre.
Ahogy az is megszűnt létezni, hogy összefűzögesd a query-ket, azt NEM SZABAD. Azt is felejtsd el. Csak NAGYON ritkán van rá szükség, pl. az IN(...) jellegű query-knél.Tehát pl.:
$result = $DB->query("SELECT * FROM places WHERE id = '$parent_area')");
$result->setFetchMode(PDO::FETCH_COLUMN);
while($row = $result->fetch())
{
$has_parent=$row['parent_has_parent'];
}HELYETT
$sth = $DB->prepare('SELECT * FROM places WHERE id = :id');
$sth->bindParam(':id', $parent_area, PDO::PARAM_INT);
$sth->execute();
$myResults = array();
while($row = $sth->fetch(PDO::FETCH_ASSOC)){
// do something with this row....
$has_parent=$row['parent_has_parent'];
if($has_parent){
// ...
}
else{
// ...
}
$myResults[] = $row;
}===
(#2111) Briganti : rossz helyre címezted.
[ Szerkesztve ]
Sk8erPeter
-
papa019
senior tag
válasz Sk8erPeter #2113 üzenetére
Értem.
Így már működik. -
Briganti
tag
válasz Sk8erPeter #2113 üzenetére
Hupsz, bocsi
De jar neked a a szep kerek valaszertIf debugging is a process of removing bug, then programming is a process of putting them in ...
-
válasz Sk8erPeter #2113 üzenetére
Ha csak paraméterek behelyettesítéséről beszélünk, akkor az IN jellegűeknél sem kell összefűzni semmit se, működik a prepared statement-es megoldás. Ha úgy járnánk el, hogy majdnem mindenhol helyesen használjuk a prepared statement-eket, csak egy pár helyen nem, akkor olyan, mintha nem is használnánk prepared statement-eket.
---
Egyébként szerintem van értelme pl. PDO köré is wrapper-t írni, mert nagyon ocsmányul néz ki. Főleg akkor hasznos, ha ismeretlen számú paraméterekkel kell dolgozni.
-
Sk8erPeter
nagyúr
válasz Peter Kiss #2117 üzenetére
Ki is próbáltad az IN-nél?
Én csak kerülő megoldásról tudok, ahogy itt írják:select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)Itt a
find_in_set(cast(products.id as char), :products)
a lényeg, feltételezem, ez jóval lassabb, mint egy "rendes" IN...localhoston gyorsan tesztelve az előbbi 0.0276 másodperc, míg a "normál" IN 0.0008 másodperc, ami azért igen jelentős különbség azt tekintve, hogy összesen 4 sor van a teszttáblámban. Óriásira nőtt adatbázisnál szerintem ez elég durva különbségekhez vezethet!
==
"Egyébként szerintem van értelme pl. PDO köré is wrapper-t írni, mert nagyon ocsmányul néz ki."
Mi a baj vele?"Főleg akkor hasznos, ha ismeretlen számú paraméterekkel kell dolgozni."
Array-t is átadhatsz az execute()-nak.[ Szerkesztve ]
Sk8erPeter
-
válasz Sk8erPeter #2118 üzenetére
Persze, használtam már, használom is.
-
Sk8erPeter
nagyúr
válasz Peter Kiss #2119 üzenetére
Hogyan használod? Pont erre lennék kíváncsi.
Nálam a sima implode-os prepared statementes átadás rosszul működik, nem adja vissza azt az eredményhalmazt, amit várok, és amit akkor ad vissza, ha simán lefuttatom a query-t, megadott id-kkel.Sk8erPeter
-
válasz Sk8erPeter #2120 üzenetére
Röviden annyi, hogy végigmegyek a tömbön, amiben pl. számok vannak, közben kiegészítem a query-t ?-ekkel (nem használok nevesített paraméterek), majd elrakom a tömböt. Végrehajtáskor már megvan a kész query (pl. "SELECT * FROM tbl WHERE ID IN (?, ?, ?, ?)"), megvan minden adat, mehet a sima PDO-s binding, és megy is rendesen.
-
Sk8erPeter
nagyúr
válasz Peter Kiss #2121 üzenetére
"közben kiegészítem a query-t ?-ekkel (nem használok nevesített paraméterek), majd elrakom a tömböt. Végrehajtáskor már megvan a kész query"
Tehát akkor kénytelen vagy konkatenálni a query-t, ugye?Sk8erPeter
-
válasz Sk8erPeter #2122 üzenetére
Igen, csak nem adatokkal.
-
cucka
addikt
válasz Peter Kiss #2123 üzenetére
Szerintem ha alacsony szinten akarod kezelni az adatbázist (tehát query-ket akarsz összerakni), akkor jó a PDO meg bármi más. Ha magas szinten akarod kezelni, akkor meg beizzítasz egy ORM-et.
Amit te szeretnél csinálni, az az, hogy becsomagolod a PDO-t, mert így talán szebb lesz. Nem lesz az, mert amit leírsz, az csak szintaktikai varázslat, nincs neki túl sok funkcionális haszna. Ezernyi hasznosabb dolgot tudnék mondani, mint megírni a hatszázezredik php-s adatbázis wrapper osztályt. -
-
Sk8erPeter
nagyúr
válasz Peter Kiss #2123 üzenetére
Tehát az eredeti állításom, miszerint a query-k konkatenálását az IN-jellegű lekéréseknél nem úszod meg, igaz. A megvalósítás viszont megint más kérdés, ez is tény. A "behelyettesítés" meg valóban úgy a "biztonságos", ahogy írod. Bár ha valakinek van némi fogalma az adatbázis-lekérésekről, az remélhetőleg nem fog így se-úgy se escape-eletlenül hozzáfűzögetni semmit.
Sk8erPeter
-
coco2
őstag
Szijasztok!
MySQL szerverhez keresgetek lehetőségeket adatbázis csak olvasható replikák létrehozásához. Olyasmi kellene, ami elküldi az olvasási kérdéseket a távoli szerveren lévő adatbázisnak, és gyorsító tárazza is helyileg, ami visszaérkezett. Írásnál persze írni kell mindkettőt, de kiolvasásra elég, ha pld 5 percenként frissül a helyi adat, hogy terhelést tudjak levenni a távoli szerverről. Ismer valaki ilyesmi supportot mysql-hez? Vagy ez tipikusan olyan dolog, amit mindenki írjon meg magának testre szabottan?
Google pajtás csak Amazon db találatokat dobált ki nekem, de nekem nem amazon szolgáltatásom van, hanem saját kézben a vas, és amit arra telepítek. (És persze az sem ártana, ha nem 100milliókat kellene kifizetnem.)
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
arisu
csendes tag
üdvözletem!
Akadna egy kis problémám. Ingyenes webtárhelyen megy a webshopom fejlesztése és szerettem volna újra üzembehelyezni localhoston is. Sajnos a gép és a rendszer nem nagyon engedte. Kivettem a jelszót, újraraktam a wampot, semmi.
: Undefined index: user-t ír és
Access denied for user 'xyz'@'localhost' (using password: YES)Pedig nem használok jelszót, nincs semmiféle ilyen dolog. Az indexpen pedig definiálva van, ezért nem értem, mert online teljes mértékben működik :S
-
Sk8erPeter
nagyúr
Hát azért, mert localhoston, a MySQL-szerveren nem hoztad létre az "xyz" felhasználót, vagy nem adtál hozzá jelszót, vagy rossz jelszót adtál hozzá, vagy csak nem rendelted hozzá az engedélyeket a webshop táblájához... ezek valamelyike. Tehát ugyanaz a felhasználónév+jelszó páros legyen meg localhoston is, mint az éles MySQL-szerveren.
Ha nem lenne jelszó, az gáz lenne.[ Szerkesztve ]
Sk8erPeter
-
19.Norbika
csendes tag
válasz Sk8erPeter #2129 üzenetére
Így van. Localhoston megesik hogy, egy jogosultsághoz nem rendelsz pass-t. az alapba nem egészséges. De ha migráltad a tljes adatbázist, akkor hozz létre egy új usert jelszóval, ezt meg kell adni természetesen az sql connectnél a php kódban is.
Nightvis | www.nethq.hu - html,php,js,jquery,c#,sql programozás
Aktív témák
- Milyen TV-t vegyek?
- Honda topik
- No Voice in the Galaxy
- gban: Ingyen kellene, de tegnapra
- KERÉKPÁR / BRINGA / ALKATRÉSZ beárazás
- Call of Duty: Modern Warfare III (2023)
- VR topik (Oculus Rift, stb.)
- Poco X6 Pro - ötös alá
- Kerékpárosok, bringások ide!
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
- További aktív témák...