ok. das formular von phpmyadmin zum ausführen von sql sieht deutlich anders aus als das, was du da übergibst.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form method="post" action="import.php" enctype="multipart/form-data" id="sqlqueryform" onsubmit="return checkSqlQuery(this)" name="sqlform">
<input type="hidden" name="phpMyAdmin" value="a0bf1e7540eacb9f946220ba5bcc2e16" />
<input type="hidden" name="is_js_confirmed" value="0" />
<input type="hidden" name="lang" value="de-utf-8" />
<input type="hidden" name="convcharset" value="iso-8859-1" />
<input type="hidden" name="collation_connection" value="utf8_unicode_ci" />
<input type="hidden" name="token" value="0cedd2dc5a95f3850b3923399b4b594f" />
<input type="hidden" name="pos" value="0" />
<input type="hidden" name="goto" value="server_sql.php" />
<input type="hidden" name="zero_rows" value="Ihr SQL-Befehl wurde erfolgreich ausgef&� />
<input type="hidden" name="prev_sql_query" value="" />
<input type="hidden" name="phpMyAdmin" value="a0bf1e7540eacb9f946220ba5bcc2e16" />
<textarea name="sql_query" id="sqlquery" cols="40" rows="7" dir="ltr" onfocus="selectContent( this, sql_box_locked, true )"></textarea>
<input type="text" name="bkm_label" id="bkm_label" value="" />
<input type="checkbox" name="bkm_all_users" id="id_bkm_all_users" value="true" />
<input type="checkbox" name="bkm_replace" id="id_bkm_replace" value="true" />
<input type="hidden" name="phpMyAdmin" value="a0bf1e7540eacb9f946220ba5bcc2e16" />
<input type="text" name="sql_delimiter" size="3" value=";" id="id_sql_delimiter" /> ]
<input type="checkbox" name="show_query" value="1" id="checkbox_show_query" checked="checked" />
<input type="submit" name="SQL" value="OK" />
...
ich habe mal vor einiger zeit phpmyadmin als db-proxy nutzen müssen, um eine datenbank zu exportieren. die db war zu groÃ, um sie in einem stück zu ziehen, da php dann ständig abbrach. also musste ich sie stückweise ziehen. dazu musste ich wissen, wieviele einträge in einer tabelle sind, also musste ich vorher ein select count(id) machen. der aufruf dabei sah so aus (die phpmyadmin-version erinnere ich nicht, aber da's schon ein weilchen her ist, war's eher älter. keine authentifizierung in phpmyadmin wie's heute ist).
my $req = HTTP::Request->new('POST', 'https://www.example.tld/phpmyadmin/read_dump.php', $headers);
$req->content_type('application/x-www-form-urlencoded');
$req->content('is_js_confirmed=0&lang=de-iso-8859-1&server=1&db=ati&pos=0&goto=db_details.php&zero_rows=' . uri_escape('Ihr SQL-Befehl wurde erfolgreich ausgeführt.') . '&prev_sql_query=&sql_query=' . uri_escape($query) . '&show_query=1&sql_file_compression=&');
$req->content_length(length($req->content));
das funktionierte. möglicherweise ist der content_type relevant? oder eines der form-felder, die du nicht übergeben hast. ich bin kein fan der kurz-form-schreibweise bei requests, ich mach's immer umständlich aber dafür hab ich immer den eindruck, es übersichtlicher zu haben und alles machen zu können, wie ich es will. hope that helps.