2017-04-20 2 views
0

Ich frage mich, wie ich auf eine Speicherprozedur mit einem in Parameter im PHP-Code mit PDO aufrufen kann.PHP-Aufruf zu speichern Prozedur mit PDO-Problem

Die Art, wie ich dies tun möchte, ist ein Auswahlfeld aus der Datenbank geladen, wählen Sie einen Wert und verwenden Sie dann diesen Wert als ein Parameter für meine Speicherprozedur.

Zuerst habe ich die SQL für meine Auswahlbox:

$authorSql = "SELECT * FROM author"; 
$authorQuery = $pdo->prepare($authorSql); 
$authorQuery->execute(); 

dann in meinem html:

<select name="authorid"> 
<?php 

$authorid=""; 
while($author = $authorQuery->fetch()) { 
if ($author['id'] == $authorid) { 
//The author is currently associated to the joke, select it by default 
echo "<option value=\"{$author['id']}\" selected>{$author['name']}</option>"; 
} else { 
//The author is not currently associated to the joke 
echo "<option value=\"{$author['id']}\">{$author['name']}</option>"; 
} 
} 

?> 
</select> 

<table width='80%' border=0> 

    <tr bgcolor='#CCCCCC'> 
     <td>Joke</td> 
     <td>Author Name</td> 
     <td>Update</td> 
    </tr> 
    <?php 
$result = $pdo->query("call jokes_author(:author)");  
    while($row = $result->fetch()) {   
     echo "<tr>"; 
     echo "<td>".$row['joketext']."</td>"; 
     echo "<td>".$row['name']."</td>"; 
     echo "<td><a href=\"edit.php?id=$row[id]\">Edit</a> | <a href=\"delete.php?id=$row[id]\" onClick=\"return confirm('Are you sure you want to delete?')\">Delete</a></td>";   
    } 

    ?> 
    <a href="logout.php">Logout</a> 
    </table> 

Der Code für die Shop-Verfahren ist:

CREATE PROCEDURE `jokes_author`(IN author VARCHAR(255)) 
BEGIN 
SELECT joke.joketext, author.name FROM author INNER JOIN joke ON author.id = joke.authorid where name = author; 
END 

Die I Teil kann nicht begreifen, was zu tun ist, um den gewählten Wert aus der Auswahlbox zu erfassen und in den Aufruf der Speicherprozedur überzugehen.

-Danke

Antwort

0

Verwendung PDO auf folgende Weise:

$result = $pdo->prepare("call jokes_author(:author)");  
$result->bindParam(':author', $author); 
$result->execute(); 
+0

Dank, aber wenn ich einen Wert aus dem Auswahlfeld wählen, nichts passiert, hat den $ Autor Variable aus dem Auswahlbox Pass in der Wert für die Speicherprozedur? – user2371684

+0

Ich habe die Variable nur als Beispiel geschrieben. Übergeben Sie die Variable, die den Wert des Parameters enthält, den Sie in der gespeicherten Prozedur "jokes_author" übergeben würden. Ich vermute, Sie würden die Autor-ID darin übergeben :) – gaganshera

+0

normalerweise wäre es die Namenszeichenfolge, die übergeben werden würde, aber ich bin verwirrt, welche Variable in die Speicherprozedur übergeben werden soll – user2371684

Verwandte Themen