|
| PHP, Stored Procedures og MySQL Fra : Henrik Pedersen |
Dato : 14-04-08 20:01 |
|
Hejsan
Nogle af jer der ligger inde med guldtippet ?
Jeg har efterhånden brugt adskillige timer på koden og på google, uden den
store succes.
Jeg har en relativt kompliceret SELECT der skal bruge tre parametre, som jeg
af flere gode grunde har valgt at omskrive til en SP.
Den er testet og verificeret i mysql klienten og returnere et flot dataset.
Jeg har de sidste par timer fumlet rundt med mysqli, prepare og param uden
den store success, så min bøn er om der skulle være nogle af jer der ligger
inde med guldtippet.
Med venlig hilsen
Henrik
| |
Michael Rasmussen (14-04-2008)
| Kommentar Fra : Michael Rasmussen |
Dato : 14-04-08 21:05 |
|
| |
Henrik Pedersen (15-04-2008)
| Kommentar Fra : Henrik Pedersen |
Dato : 15-04-08 20:10 |
|
Michael Rasmussen wrote:
> On Mon, 14 Apr 2008 21:01:24 +0200
> Henrik Pedersen <henrik.kirneh@gmail.com> wrote:
>
>>
>> Jeg har de sidste par timer fumlet rundt med mysqli, prepare og param
>> uden den store success, så min bøn er om der skulle være nogle af jer
>> der ligger inde med guldtippet.
>>
> Du kunne jo starte med at poste, hvad du har lavet indtil videre.
>
Følgende er bla. prøvet.
Den SP der kaldes returnere et resultset bestående af op 10 records, 12
felter.
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
} else {echo "Forbindelse !<br>\n";}
$date = '2008-02-02';
$order = 'FirstName';
$sort = 'asc';
#$stmt = $conn->init();
if ($stmt = $conn->prepare("call vsp_SHIFTLIST(?, ?, ?)")) {
$stmt->bind_param("dss", $date, $order, $sort);
$stmt->execute();
$stmt->bind_result($result);
while ($stmt->fetch()){
echo "Value: ".$result[0];
}
$stmt->close();
}
$conn->close();
Når den kaldes i php resultere det i følgende:
Warning: mysqli_stmt::bind_result() [function.mysqli-stmt-bind-result]:
Number of bind variables doesn't match number of fields in prepared
statement. in /home/henrik/Projekter/web/sp-test/index.php on line 26
Henrik
| |
Michael Rasmussen (15-04-2008)
| Kommentar Fra : Michael Rasmussen |
Dato : 15-04-08 22:12 |
|
| |
Henrik Pedersen (15-04-2008)
| Kommentar Fra : Henrik Pedersen |
Dato : 15-04-08 22:41 |
|
Michael Rasmussen wrote:
> On Tue, 15 Apr 2008 21:10:29 +0200
> Henrik Pedersen <henrik.kirneh@gmail.com> wrote:
>
>> Når den kaldes i php resultere det i følgende:
>> Warning: mysqli_stmt::bind_result()
>> [function.mysqli-stmt-bind-result]: Number of bind variables doesn't
>> match number of fields in prepared statement.
>> in /home/henrik/Projekter/web/sp-test/index.php on line 26
> Hvis du logger ind via mysql, og kalder din SP fra mysql
> kommandolinjen, hvor mange tuple bliver der så returneret? Er svaret
> mere end 1, har du dit svar. bind_result skal have et antal variable
> svarende til antallet af tupler i response tabellen. Den kan ikke binde
> til en pseudo array variable, da bindingen foregår 1->1.
>
Øv !
Antallet af felter i hver tuble er konstant.
Antallet af tubles variere i forhold til parametrene.
Er der nogle måder at omgå det på.
Jeg fandt nogle artikler via google der antydede at det kunne lade sig gøre,
men desværre ikke noget konkret.
Da det er dataset/tubles jeg vil have retur ville det være optimalt hvis
views kunne tage parametre, men den luksus er desværre ikke til stede.
Nogle forslag ?
Henrik
| |
Michael Rasmussen (16-04-2008)
| Kommentar Fra : Michael Rasmussen |
Dato : 16-04-08 00:52 |
|
| |
|
|