2007-07-09 07:29:02 +00:00
|
|
|
<?php
|
2009-08-29 13:57:50 +00:00
|
|
|
$PROCEDURE = $_GET["call"];
|
|
|
|
page_header(lang('Call') . ": " . h($PROCEDURE), $error);
|
2007-07-10 13:30:42 +00:00
|
|
|
|
2009-08-29 13:57:50 +00:00
|
|
|
$routine = routine($PROCEDURE, (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE"));
|
2007-07-09 16:11:34 +00:00
|
|
|
$in = array();
|
|
|
|
$out = array();
|
2007-07-16 13:52:46 +00:00
|
|
|
foreach ($routine["fields"] as $i => $field) {
|
2007-07-16 13:56:34 +00:00
|
|
|
if (substr($field["inout"], -3) == "OUT") {
|
2007-07-09 16:11:34 +00:00
|
|
|
$out[$i] = "@" . idf_escape($field["field"]) . " AS " . idf_escape($field["field"]);
|
|
|
|
}
|
2007-07-16 13:56:34 +00:00
|
|
|
if (!$field["inout"] || substr($field["inout"], 0, 2) == "IN") {
|
2007-07-09 16:11:34 +00:00
|
|
|
$in[] = $i;
|
|
|
|
}
|
|
|
|
}
|
2007-07-10 13:30:42 +00:00
|
|
|
|
2008-04-10 14:37:10 +00:00
|
|
|
if (!$error && $_POST) {
|
2007-07-09 16:11:34 +00:00
|
|
|
$call = array();
|
2007-07-16 13:52:46 +00:00
|
|
|
foreach ($routine["fields"] as $key => $field) {
|
2007-07-09 16:11:34 +00:00
|
|
|
if (in_array($key, $in)) {
|
2009-07-27 16:32:56 +00:00
|
|
|
$val = process_input($field);
|
2007-07-11 11:04:18 +00:00
|
|
|
if ($val === false) {
|
|
|
|
$val = "''";
|
|
|
|
}
|
2007-07-09 16:11:34 +00:00
|
|
|
if (isset($out[$key])) {
|
2009-07-28 16:20:50 +00:00
|
|
|
$dbh->query("SET @" . idf_escape($field["field"]) . " = $val");
|
2007-07-09 16:11:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
$call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val);
|
2007-07-09 07:29:02 +00:00
|
|
|
}
|
2009-08-29 13:57:50 +00:00
|
|
|
$result = $dbh->multi_query((isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($PROCEDURE) . "(" . implode(", ", $call) . ")");
|
2007-07-09 07:29:02 +00:00
|
|
|
if (!$result) {
|
2009-07-28 16:20:50 +00:00
|
|
|
echo "<p class='error'>" . h($dbh->error) . "\n";
|
2007-07-09 07:29:02 +00:00
|
|
|
} else {
|
2007-07-10 13:30:42 +00:00
|
|
|
do {
|
2009-05-08 05:23:03 +00:00
|
|
|
$result = $dbh->store_result();
|
2007-07-10 13:30:42 +00:00
|
|
|
if (is_object($result)) {
|
|
|
|
select($result);
|
|
|
|
} else {
|
2009-07-11 20:30:40 +00:00
|
|
|
echo "<p class='message'>" . lang('Routine has been called, %d row(s) affected.', $dbh->affected_rows) . "\n";
|
2007-07-10 13:30:42 +00:00
|
|
|
}
|
2009-05-08 05:23:03 +00:00
|
|
|
} while ($dbh->next_result());
|
2007-07-09 16:11:34 +00:00
|
|
|
if ($out) {
|
2009-05-08 05:23:03 +00:00
|
|
|
select($dbh->query("SELECT " . implode(", ", $out)));
|
2007-07-09 16:11:34 +00:00
|
|
|
}
|
2007-07-09 07:29:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|
2007-07-09 16:11:34 +00:00
|
|
|
|
2007-07-09 07:29:02 +00:00
|
|
|
<form action="" method="post">
|
|
|
|
<?php
|
2007-07-09 16:11:34 +00:00
|
|
|
if ($in) {
|
2009-05-01 10:41:33 +00:00
|
|
|
echo "<table cellspacing='0'>\n";
|
2007-07-09 16:11:34 +00:00
|
|
|
foreach ($in as $key) {
|
2007-07-16 13:52:46 +00:00
|
|
|
$field = $routine["fields"][$key];
|
2009-07-28 16:20:50 +00:00
|
|
|
echo "<tr><th>" . h($field["field"]);
|
2007-07-09 16:11:34 +00:00
|
|
|
$value = $_POST["fields"][$key];
|
|
|
|
if (strlen($value) && ($field["type"] == "enum" || $field["type"] == "set")) {
|
|
|
|
$value = intval($value);
|
|
|
|
}
|
2009-07-23 14:42:38 +00:00
|
|
|
input($field, $value, (string) $_POST["function"][$name]); // param name can be empty
|
2009-07-11 20:30:40 +00:00
|
|
|
echo "\n";
|
2007-07-09 07:29:02 +00:00
|
|
|
}
|
|
|
|
echo "</table>\n";
|
|
|
|
}
|
|
|
|
?>
|
2007-07-11 21:06:19 +00:00
|
|
|
<p>
|
2009-07-11 20:30:40 +00:00
|
|
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
|
|
|
<input type="submit" value="<?php echo lang('Call'); ?>">
|
2007-07-09 07:29:02 +00:00
|
|
|
</form>
|