Avatar billede dgivoni Nybegynder
14. maj 2001 - 12:23 Der er 8 kommentarer og
1 løsning

generalisering af sql-kald?

Jeg er ved at lave en exe-sql-funktion.
Er det nødvendigt at skelne mellem update/insert/delete og så select i udførslen af sql-kald?
Men kan man ikke forene de to typer af sql-kald ved at sætte $result=mysql_query(sql) også ved update/insert/delete? Kommer $result så ikke bare indeholde false eller true?

Funktionen:
function exe_sql($sql) {
if (!($result=mysql_query($sql)) {
showerror(mysql_error());
}
}

Med andre ord vil ovenstående funktion også returnere en fejl ved update/insert/delete-kald?
Avatar billede lauer Nybegynder
14. maj 2001 - 12:29 #1
ja, det vel den.
det er lige meget om hvad du gør, så vil mysql altid komme tilbage med true eller false.
du kan læse lidt om brug af functioner ved mysql-kald på
http://webcafe.dk/php/artikler/204/phpa204.php3
Avatar billede dgivoni Nybegynder
14. maj 2001 - 12:33 #2
tak, machoman.
jeg glemte i øvrigt lige at returnere $result fra funktionen, ellers er der jo ikke meget ved select-kald :-)
Avatar billede lauer Nybegynder
14. maj 2001 - 12:38 #3
heh, det kan du have meget ret i ;)
Avatar billede dgivoni Nybegynder
14. maj 2001 - 12:46 #4
Jeg har lige tjekket linket, Machoman.
Han deler også op i spørgende og udførende sql-kald. Men hvorfor egentlig? Er det kun for at spare overhead ved ikke at skulle returnere en værdi (true/false), som alligevel ikke bruges til noget i de udførende kald?
Avatar billede erikjacobsen Ekspert
14. maj 2001 - 12:50 #5
Du kan bare - og skal egentlig:

function exe_sql($sql) {
  if (!($result=mysql_query($sql)) {
      showerror(mysql_error());
  }
  return $result;
}


så kan du lave
$res=exe_sql(\"select ...\");
som du plejer, og:
$res=exe_sql(\"update...\");
echo mysql_rows_affected($res);

(ingen point til mig, tak)
Avatar billede erikjacobsen Ekspert
14. maj 2001 - 12:52 #6
Nå nej, det er jo

$res=exe_sql(\"update...\");
echo mysql_affected_rows();

Den tager altid aktuelle connection..... Sådan :)
Avatar billede dgivoni Nybegynder
14. maj 2001 - 12:55 #7
erik >> det mente jeg også nok, men du har i et tidligere eksempel også delt det op i to funktioner??
(en exe_sql og en exe_sql_res)
Avatar billede erikjacobsen Ekspert
14. maj 2001 - 13:00 #8
Ja jeg har.... men man kan nøjes med den ene, som du antyder, bare du
sørger for at sige return $result.
Avatar billede dgivoni Nybegynder
14. maj 2001 - 13:05 #9
ok, forstået.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester