Behalve een veld van het type set, maar die ben ik nog nooit in het wild tegengekomen.quote:Op maandag 1 september 2008 23:53 schreef Farenji het volgende:
Een veld in mysql bevat altijd 1 waarde; geen lijst van waardes.
Dan wordt het tijd om ander werk te zoeken of de opdracht te weigeren. Serieus. Je gebruikt een relationele database.quote:Op dinsdag 2 september 2008 00:07 schreef Hafez het volgende:
Nogmaals dit slaat natuurlijk nergens op, maar dit is een test voor een complexere situatie waar ik geen andere keus heb op dit moment.
dit ging over nummers met een punt bvquote:Die nummers kun je het beste opslaan als een mediumint (signed/unsigned, afhankelijk van of je wel/geen negatieve nummers tegenkomt).
Wat denk je er zelf vanquote:Op dinsdag 2 september 2008 08:52 schreef Chandler het volgende:
nu wil ik ze ook precies zo opslaan (met de punt) en dat doe ik nu in een varchar 10, echter zou ik willen weten of hier ook een andere functie data type voor is?![]()
Waarom zou je de subquery niet willen uitvoeren in je WHERE clause?quote:Op woensdag 3 september 2008 00:50 schreef wipes66 het volgende:
Maar hoe kan je dan bijvoorbeeld selecteren op 'd'? (zonder de subquery uit te voeren bij 'WHERE')
Omdat hij dan 2x wordt uitgevoerd? (of wordt dat automatisch geoptimaliseerd? )quote:Op woensdag 3 september 2008 01:07 schreef slakkie het volgende:
[..]
Waarom zou je de subquery niet willen uitvoeren in je WHERE clause?
Kan je dan niet beter zoiets doen:quote:Op woensdag 3 september 2008 01:50 schreef wipes66 het volgende:
SELECT id, name, (SELECT COUNT(id) FROM feed_items WHERE product_id = products.id) AS numshops
FROM products WHERE (SELECT COUNT(id) FROM feed_items WHERE product_id = products.id) > 0
ik zou zeggen dat MAX(num) sneller is, om de eenvoudige reden dat deze gemaakt is voor de handeling... maar ik kan het niet onderbouwen ofzoquote:Op woensdag 3 september 2008 00:50 schreef wipes66 het volgende:
Weet iemand welke sneller is?
SELECT num FROM products ORDER BY num DESC LIMIT 0,1
of
SELECT MAX(num) FROM products
tnxquote:Op woensdag 3 september 2008 03:59 schreef slakkie het volgende:
[..]
Kan je dan niet beter zoiets doen:
SELECT products.id as p_id, products.name as p_name, COUNT(feed_items.id) as numshops
FROM products, feed_items
WHERE feed_items.product_id = p_id
GROUP BY p_id, p_name, numshops
HAVING numshops > 0
En ik wil de data uit de array ophalen.quote:SELECT a.*, b.*
FROM a, b
WHERE a.id = b.id
wat mij het meest logische leek, werkt niet.quote:while ($rij = mysql_fetch_array($result)) {
$id = $rij['a.id'];
$name = $rij['b.name'];
}
Ah! Daarom vond ik nietsquote:Op donderdag 4 september 2008 22:49 schreef HuHu het volgende:
Je moet niet mysql_fetch_array gebruiken, maar mysql_fetch_assoc.
Dat maakt weinig uit. Beide leveren een associative array. Het verschil is dat mysql_fetch_array ook een numerieke array levert. Je kunt de data dus op 2 manieren benaderen.quote:Op donderdag 4 september 2008 22:49 schreef HuHu het volgende:
Je moet niet mysql_fetch_array gebruiken, maar mysql_fetch_assoc.
1 2 3 4 5 6 | while ($rij = mysql_fetch_array($result)) { $id = $rij['id']; $name = $rij['name']; } ?> |
Ja, en de standaard is MYSQL_BOTH. Daarbij, met enkel verwijzen naar mysql_assoc wordt de vraag niet beantwoord.quote:Op donderdag 4 september 2008 23:43 schreef slakkie het volgende:
Sterker nog met mysql_fetch_array kan je een numerieke, associatieve of beide opvragen:
array mysql_fetch_array ( resource $result [, int $result_type ] )
The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and the default value of MYSQL_BOTH.
Ik zou het niet met php doen maar met phatch. Dat draait onder ubuntu, kijk er eens naarquote:Op vrijdag 5 september 2008 11:40 schreef Chandler het volgende:
Wederom heb ik een vraagje (wanneer niet)
Stel ik heb 100.000 JPG bestanden varierend tussen de 10KB en 1MB en wil deze eigelijk allemaal wat kleiner hebben qua bestandsformaat. Nu wil ik deze graag comprimeren middels PHP echter wil ik het verlies van de kwaliteit zo klein mogelijk houden.
Wat raden jullie aan? want als ik zelf het compressie ratio instel moet ik per afbeelding gaan controlleren of de afbeelding er met dat ratio nog wel mooi uitziet... Anyone?
Ps. converteren naar PNG of ander formaat is niet mogelijk (in dit idee)
je kan trimmen wat je wilt, maar dat is een string bewerking die uiteindelijk een andere (lege) string oplevert. NULL is iets totaal anders; dat is "niets". Dus geen lege string, maar gewoon niets.quote:Op vrijdag 5 september 2008 16:21 schreef poepeneesje het volgende:
Ik zou het graag als NULL willen opslaan. Ik ga even kijken naar trim.
Dan kun je bij het samenstellen van de INSERT-query ervoor zorgen dat voor het veld wat je NULL wilt hebben helemaal niets wordt geschreven. Dus checken bij het bouwen van de query of de string (eventueel na trimmen; de PHP-functie) leeg is, en alleen als dat niet zo is de waarde naar de db schrijven.quote:Op vrijdag 5 september 2008 16:51 schreef poepeneesje het volgende:
Bij het verzenden van het formulier naar de database, wil ik dat indien er niets wordt ingevuld in de textarea, dat er in de datebase in dat valt gewoon NULL staat en geen spatie.
Of gewoon niets inserten, waarbij MySQL er zelf NULL van maakt (als je in je schema NULL toestaat en als default value hebt).quote:Op vrijdag 5 september 2008 16:57 schreef GlowMouse het volgende:
en in dat geval NULL ipv een string INSERTEN.
1 2 3 4 5 6 7 8 | $input = " "; $input = trim($input); if (!strlen($input)) { $input = null } # Doorgaan alsof er niks aan de hand is ?> |
Een lege string is in sommige gevallen beter dan NULL. Soms wil je namelijk echt een onderscheid maken tussen een lege string en NULL, bijv als je in een left join wil controleren of er geen match is, en dat kan dan niet (of is minder betrouwbaar) als er ook NULL values in bestaande rows zitten.quote:Op vrijdag 5 september 2008 17:12 schreef poepeneesje het volgende:
CraZaay & GlowMouse, ik wist niet dat het ook een PHP-functie is. Daar ga ik vanavond dan even opnieuw naar kijken.
Het wordt niet zozeer als lege string opgeslagen, maar echt als een spatie. Waarschijnlijk maakt het niet veel uit, maar het is wel netter (vind ik) als er dan gewoon niets wordt opgeslagen. Maar ik denk dat ik weet waar het misgaat, nu je begint over een lege string.
Ik ga vanavond even kijken, bedankt voor de snelle reacties jongens.
Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.quote:Op vrijdag 5 september 2008 17:22 schreef slakkie het volgende:
[ code verwijderd ]
Ik ga er maar even vanuit dat null van php ook in de query gewoon NULL wordt..
Dan maak je er in slakkies code $input = 'NULL' van. Het is dan string waarde 'NULL', maar wanneer je deze unescaped in je query zet is het gewoon "bla = NULL" in de query. Heel die query is namelijk al een samenstelling van strings.quote:Op vrijdag 5 september 2008 17:25 schreef GlowMouse het volgende:
Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.
Zo makkelijk is het niet. Er zal dan de string 'NULL' in je database komen in plaats van NULL. Je zou bijvoorbeeld iets kunnen doen als then $input='NULL' else $input = "'" . $db->escape($input) . "'". Maar nogmaals: waarom moeilijk doen als je het niet nodig hebt, je geen idee hebt wat je doet, en je jezelf alleen ellende op de hals haalt?quote:Op vrijdag 5 september 2008 17:29 schreef CraZaay het volgende:
[..]
Dan maak je er in slakkies code $input = 'NULL' van. Het is dan string waarde 'NULL', maar wanneer je deze unescaped in je query zet is het gewoon "bla = NULL" in de query. Heel die query is namelijk al een samenstelling van strings.
Nee, dat is niet correctquote:Op vrijdag 5 september 2008 17:32 schreef GlowMouse het volgende:
Zo makkelijk is het niet. Er zal dan de string 'NULL' in je database komen in plaats van NULL.
1 2 3 4 5 | $input = 'NULL'; mysql_query("INSERT INTO table (input) VALUES ($input);"); ?> |
1 |
Dit is een versimpelde versie uiteraard, ik ga er vanuit dat je ook geen zin hebt in injection enzo en al iets met die string gedaan hebt, bijvoorbeeld ge-escaped wanneer je er wel een string in wilt hebbenquote:Op vrijdag 5 september 2008 17:47 schreef GlowMouse het volgende:
Maar je hebt nooit VALUES($input) staan, omdat je dan in de problemen komt als $input een echte string is. Vandaar mijn else
Met PDO werkt het wel:quote:Op vrijdag 5 september 2008 17:25 schreef GlowMouse het volgende:
[..]
Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.
Maar ik zou me de problemen met NULL in je db niet op de hals halen als je het niet nodig hebt. Sla gewoon een lege string op.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $db = ""; $host = "localhost"; $dbname = "test"; $user = "root"; $passwd = ""; try { $db = new PDO(sprintf("mysql:host=%s;dbname=%s", $host, $dbname), $user, $passwd); } catch (PDOException $e) { printf("DB error: %s\n", $e->getMessage()); exit(1); } $sth = $db->prepare("INSERT INTO testing (val) VALUES ( ? )"); $sth->bindValue(1, null); $sth->execute(); ?> |
1 2 3 4 5 6 7 8 | -> ; +----+------+ | id | val | +----+------+ | 2 | NULL | +----+------+ 1 row in set (0.00 sec) |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |