D. Johnson wrote:
> Jacob Atzen <87oemhcj8l.fsf@morpheus.aub.dk>:
[klip]
>
> Jeg tænkte på at lave en update funktion i forbindelse
> med at opdatere en enkelt row i en mysql tabel.
> Den skulle kunne tage n antal felter der skal opdateres
> Noget ala
>
> function updatemysqlrow($et_array_af_vars,rowid,$tablename)
> {
> //VARNAME=VARHOLD vil så blive gentaget n antal gange alt efter hvor
> //stort arrayet er
> // UPDATE $tablename set VARNAME=VARINDHOLD,.... WHERE id=rowid
>
> }
>
> $name = 'hans';
> $phone = '454545';
>
> $arr[] = $name;
> $arr[] = $phone;
> updatemysqlrow($arr,21,'person');
> $zip = 2600;
> $arr[] = $zip;
> updatemysqlrow($arr,21,'person');
>
>
> Det var mest for eksperimentes skyld, det kunne være sjovt hvis man
> kunne.
>
Hvis det hovedsageligt er for eksperimentets skyld og dermed for at lære
noget, så synes jeg da endelig du skal fortsætte :)
Men med den funktion du beskriver vil jeg ikke undlade at drage din
opmærksomhed på PEAR's DB klasse.
Der findes den funktion du beskriver nemlig allerede:
<?php
require_once('DB.php');
$DB =& DB::connect('mysql://bruger:kodeord@host/database');
if( DB::isError($DB) )
{
trigger_error( $DB->getMessage(), E_USER_ERROR);
}
$arr = array('name' => 'hans', 'phone' => 454545, 'zip'=>'2600');
$res =& $DB->autoExecute('person', $arr, DB_AUTOQUERY_UPDATE, 'id=21');
if( DB::isError($res) ) {
trigger_error( $res->getMessage(), E_USER_ERROR);
}
echo 'Opdatering er sket';
?>
For at 'require_once' i ovenstående skal virke, skal du have installeret
PEAR og PEAR mappen skal være i din include_path.
Du kan læse mere om PEAR generelt på:
<
http://pear.php.net/>
og specifikt om DB klassen på:
<
http://pear.php.net/manual/en/package.database.php>
og specielt om autoExecute (som kan det du efterspørger) på;
<
http://pear.php.net/manual/en/package.database.db.intro-auto.php>
MVH Per Thomsen,
http://www.pert.dk/