Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Cursor-tingest php/mssql
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  4 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Leif Neland  
View profile   Translate to Translated (View Original)
 More options Jun 15 2012, 7:25 am
Newsgroups: dk.edb.internet.webdesign.serverside.php
From: "Leif Neland" <l...@neland.dk>
Date: Fri, 15 Jun 2012 13:25:44 +0200
Local: Fri, Jun 15 2012 7:25 am
Subject: Cursor-tingest php/mssql
Jeg skal lave dette i php.
Jeg bruger PDO imod mssql.
jeg bruger prepared statements.

For hver linie i en csv-fil:
  hent den tilsvarende record i en mssql-tabel.
  afhængig af csv-data. ret 0 til n værdier i recorden.
  skriv de rettede værdier tilbage
næste linie

Findes der en måde at lave
for hver linie
  $record->fetch($linie['id']);
  if (..) {$record[felt1]=.$linie[3]};
  if (..) {$record[felt2]=.$linie[7]..};
  $record->save();
næste linie.

Jeg vil _ikke_ bygge en sql som
for hver linie
  $sql="update tabel set ";
  if (..) {$sql .=",felt1=".$linie[3];}
  if (..) {$sql .=",felt2=".$linie[7];}
  $sql .="where id=".$linie['id'];
  execute($sql)

Ej heller opdatere et felt ad gangen
$upd1=$dbh->prepare("update tabel set felt1=? where id=?"):
$upd2=$dbh->prepare("update tabel set felt2=? where id=?"):
for hver linie
  $record->fetch($linie['id']);
  if (..) {$upd1->execute(array($linie[3],$linie['id']};
  if (..) {$upd2->execute(array($linie[7],$linie['id']};
næste linie.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Andreas Andersen  
View profile   Translate to Translated (View Original)
 More options Jun 15 2012, 7:55 am
Newsgroups: dk.edb.internet.webdesign.serverside.php
From: Andreas Andersen <andreas2...@gmail.com>
Date: Fri, 15 Jun 2012 13:55:31 +0200
Local: Fri, Jun 15 2012 7:55 am
Subject: Re: Cursor-tingest php/mssql
Den 15-06-2012 13:25, Leif Neland skrev:

> Jeg skal lave dette i php.
> Jeg bruger PDO imod mssql.
> jeg bruger prepared statements.

> For hver linie i en csv-fil:
>    hent den tilsvarende record i en mssql-tabel.
>    afhængig af csv-data. ret 0 til n værdier i recorden.
>    skriv de rettede værdier tilbage
> næste linie

MSSQL har mulighed for at indlæse en CSV-fil som temporær tabel. Den kan
du så joine med i et enkelt update-statement. Det er muligvis hurtigere.

--
Andreas


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jonathan Stein  
View profile   Translate to Translated (View Original)
 More options Jun 17 2012, 8:17 am
Newsgroups: dk.edb.internet.webdesign.serverside.php
From: Jonathan Stein <jst...@image.dk>
Date: Sun, 17 Jun 2012 14:17:40 +0200
Local: Sun, Jun 17 2012 8:17 am
Subject: Re: Cursor-tingest php/mssql
Den 15-06-2012 13:25, Leif Neland skrev:

> For hver linie i en csv-fil:
>    hent den tilsvarende record i en mssql-tabel.
>    afhængig af csv-data. ret 0 til n værdier i recorden.
>    skriv de rettede værdier tilbage
> næste linie

Prøv at google "active record pattern" - desværre er det (vist) ikke
understøttet af PDO (men så vidt jeg kunne se, findes der
PDO-udvidelser, som understøtter det).

Når du hverken vil opdatere ét felt ad gangen eller bygge en SQL-streng
med de specifikke felter, der skal opdateres, kunne løsningen være at
have én SQL-streng, som opdaterer ALLE de mulige felter (og så indsætte
eksisterende værdier for de felter, der skal beholde deres værdi).
Jeg ved dog ikke om det er realistisk i dit tilfælde.

   M.v.h.

     Jonathan


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Martin Larsen  
View profile   Translate to Translated (View Original)
 More options Jun 28 2012, 2:59 pm
Newsgroups: dk.edb.internet.webdesign.serverside.php
From: Martin Larsen <martin+spamfree+lar...@bigfoot.com>
Date: Thu, 28 Jun 2012 20:59:55 +0200
Local: Thurs, Jun 28 2012 2:59 pm
Subject: Re: Cursor-tingest php/mssql

Leif Neland wrote:
> Findes der en måde at lave
> for hver linie
>    $record->fetch($linie['id']);
>    if (..) {$record[felt1]=.$linie[3]};
>    if (..) {$record[felt2]=.$linie[7]..};
>    $record->save();
> næste linie.

Nu skriver du at det skal være op mod mssql, så mit forslag er lettere
offtopic, men Redbean PHP er et meget interessant stykke værktøj som jeg
har stiftet bekendtskab med via et projekt jeg har overtaget.

http://redbeanphp.com/

Redbean virker til mysql, sqlite, postgres og CUBRID.

Et lille eksempel fra manualen som opretter en ny post i tabellen "book":

     $book = R::dispense( 'book' );
     $book->title = 'Boost development with RedBeanPHP';
     $book->author = 'Charles Xavier';
     R::store($book);

Mere her: http://redbeanphp.com/manual/create_a_bean

Red Bean er rart at arbejde med fordi det ikke skjuler den underliggende
SQL hvis man ønsker at inddrage dette:

R::getAll( 'select * from page where title = :title',
array(':title'=>'home') );


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »