[php+mysql] Update .. Set .. Where werkt niet

Pagina: 1
Acties:

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 19-06 22:04

Gertjan

mmmm, beer...

Topicstarter
Ik heb een tabel 'test' met daarin een veld 'jobnr' en een veld 'docunaam'. 'docunaam' is nu nog leeg en 'jobnr' is gevuld met nummers. Nu heb ik een 2-dimensionale array, waarin combinaties staan van een jobnr en een docunaam. De bedoeling is om in de tabel bij de bijbehorende waarde van 'jobnr' de waarde van docunaam uit de array in te voegen.
Ik heb de syntax van UPDATE van mysql.com gevolgd, en meerdere oplossingen van andere topics op GoT geprobeerd, maar hij blijft het gewoon niet doen. Er wordt niks ingevoegd in de tabel, en ik krijg ook geen foutmelding. Weet iemand wat ik fout doe?
PHP:
1
2
3
4
5
6
7
$str = "Blaat";

for($i=0;$i<count($jobnr_docname);$i++) {
    printf("UPDATE test SET docunaam=%s WHERE jobnr=%s<br>",$jobnr_docname[$i][1],$jobnr_docname[$i][0]);
    mysql_query("UPDATE test SET docunaam='$jobnr_docname[$i][1]' WHERE jobnr='$jobnr_docname[$i][0]'")
    or die (mysql_error());
}


$jobnr_docname is de array waarin de jobnrs en documentnamen opgeslagen liggen. Een print_r:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [0] => Array
        (
            [0] => 00148
            [1] => Microsoft Word - Document1
        )

    [1] => Array
        (
            [0] => 00149
            [1] => Microsoft Word - Document1
        )

    [2] => Array
        (
            [0] => 00150
            [1] => Test Page
        )
)


Het rare is dat ook wanneer ik SET docunaam='$jobnr_docname[$i][1]' WHERE jobnr='$jobnr_docname[$i][0] vervang door bijvoorbeeld SET docunaam=$str zonder where voorwaarde er ook geen blaat geschreven wordt in docunaam.

Hellup!:'(

docuname is btw een varchar(30) voor de zekerheid

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:20
Print de sql query zoals je hem wilt uitvoeren eens naar het scherm.
(Dus net voor dat je hem uitvoert, echo hem eens, bekijk dan of je er geen fouten in ziet).

Ik denk dat de column JobNr een numerieke column is in de databank, maar, in je WHERE van je query zet je:
code:
1
WHERE jobnr = '1'

Bv.
Dit is niet goed. Die quotes rond 1 mogen er niet staan, aangezien jobnr een numeriek veld is, en geen alfanumeriek. (Althans, als het zo is. :+)

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

probeer het eens met de concatenatie operator

zo dus:
PHP:
1
"UPDATE test SET docunaam='" . $jobnr_docname[$i][1] . "' WHERE jobnr='" . $jobnr_docname[$i][0] . "'"

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 01-01 15:26

PrinsEdje80

Holographic, not grated...

Probeer eens:


PHP:
1
mysql_query("UPDATE test SET docunaam='".$jobnr_docname[$i][1]."' WHERE jobnr='".$jobnr_docname[$i][0]."'");


Let op gebruik van quotes!

PHP:
1
printf("UPDATE test SET docunaam=%s WHERE jobnr=%s<br>",$jobnr_docname[$i][1],$jobnr_docname[$i][0]);

gaat waarschijnlijk niet werken omdat $jobnr_docname[$i][1] een %d (integer) is. Maar dat kan ik ook fout hebben.

[ Voor 50% gewijzigd door PrinsEdje80 op 06-02-2003 14:07 ]

Used to be Down Under... Foto gallery


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-08 10:39

Janoz

Moderator Devschuur®

!litemod

Tweede voorbeeld zou eigenlijk docunaam='$str' moeten zijn, maar ik weet niet of dat uitmaakt..

Verder is het handig om gebruik te maken van string concatenaties ipv het zomaar in je string te zetten. Hiermee bedoel ik voor je query het volgende:
PHP:
1
$sql="UPDATE test SET docunaam='".$jobnr_docname[$i][1]."' WHERE jobnr='".$jobnr_docname[$i][0]."'";


En waarom heb je om jobnummer ook '-s staan? Het is neem ik aan toch geen string?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 19-06 22:04

Gertjan

mmmm, beer...

Topicstarter
.oisyn schreef op 06 February 2003 @ 14:05:
probeer het eens met de concatenatie operator
Held! :)
Zo werkt hij idd.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

De query had ook gewerkt als je de {} om je parameters had gezet, zie de php-manual over werken met strings.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

ACM schreef op 06 februari 2003 @ 14:25:
De query had ook gewerkt als je de {} om je parameters had gezet, zie de php-manual over werken met strings.


bah, lelijk
raad dat dan ook niet aan! :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

.oisyn schreef op 06 February 2003 @ 14:33:
bah, lelijk
raad dat dan ook niet aan! :P

Dat vind ik helemaal niet lelijk :)
Niet lelijker dan concatenaten iig.
Pagina: 1