"SQL Manager"

Radhad

Erfahrenes Mitglied
Hi zusammen,

ich bastel mir gerade ein kleines Tool zusammen, um SQL Queries an eine MySQL DB zu schicken. Dabei habe ich ein paar Realisierungsprobleme. Ich weiß, dass es bei phpmyadmin so etwas schon gibt, allerdings brauch ich das ohne den ganzen Krimskrams drumrum. Außerdem verleitet soetwas nicht einen zum "zusammen klicken" ;) und hält einen fit.

Problem 1:
Bisher habe ich es nur für SELECT-Statements realisiert. Allerdings würde ich das gerne noch erweitern für INSERT, UPDATE, ... -Statements. Dazu müsste ich meinen SQL-String untersuchen, womit er begnnt und dann die entsprechende Funktion aufrufen. Alerdings weiß ich noch nicht, wie ich das machen kann.

Problem 2:
Es könnte ja auch sein, dass ich in meiner "textarea" mehrere SQL-Anweisungen auf einma machen möchte, wie z.B. mehrere Tabellen anzeigen lassen um leichter einen Komplexen SQL-String zu basteln. Dies bedeutet, ich muss dden String teilen, und entsprechend oft untersuchen, was gemacht werden soll. Hierbei habe ich auch noch gar keine Erfahrungen gesammelt und könnte ein paar Hilfestellungen gebrauchen.

Problem 3:
Die Inhalte der "textarea" würde ich auch gerne Speichern und Laden können. Geht das auch mittels eines "Speichern unter..." Dialogs? Das wäre dann sehr komfortabel :)

Um mir leichter einen Denkanstoß geben zu können, hier mal das Script soweit wie ich es bisher geschrieben habe.
PHP:
<?php
include("connect.php");

function sql_select($query)
{
	$result = mysql_query($query) or die(mysql_error());
    $count = mysql_num_fields($result);
    echo '<table border="0" cellspacing="0" cellpadding="2" width="100%" style="border: 0px solid black;">
    <tr>';
    for($i = 0; $i < $count; $i++)
    {
		echo '<td style="background: #CCCCFF; border-bottom: 1px solid black; font-weight: bold;">'.mysql_field_name($result, $i).'</td>';
    }
    echo '</tr>';
    while($data = mysql_fetch_array($result))
    {
        echo '<tr>';
        for($i = 0; $i < $count; $i++)
        {
            echo '<td style="border-bottom: 1px solid black;">'.$data[$i].'</td>';
        }
        echo '</tr>';
    }
    echo '</table>';
}

echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<table border="0" cellspacing="0" cellpadding="0">
	<tr>
		<td>
			<textarea name="sql" cols="50" rows="10">'.$_POST["sql"].'</textarea>
		</td>
	</tr>
	<tr>
		<td>
			<input type="submit" value="Send">
			<input type="reset" value="Reset">
		</td>
	</tr>
</table>
</form><br><br>';

if(isset($_POST["sql"]))
{
    $sql = mysql_real_escape_string($_POST["sql"]);
    
    sql_select($sql);
}
?>
Danke schonmal für jeden Hint!


Gruß Radhad
 
Zuletzt bearbeitet:
So, ich bin jetzt selber auf einen Teil der Lösung zum oben angesprochenen Problem 1 & 2 gekommen.

Wenn ich jetzt in der textarea z.B. folgendes schreibe:
PHP:
SELECT * FROM user;
SELECT * FROM cup;
wird die erste Tabelle ausgegeben, bei der 2. kommt folgende Fehlermeldung: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\r\nSELECT * FROM cup' at line 1
Wie kann ich denn jetzt "\r\n" da rauslöschen?

Hier nochmal der neue Code:
PHP:
<?php
include("connect.php");

function sql_select($query)
{
	$result = mysql_query($query) or die(mysql_error());
    $count = mysql_num_fields($result);
    echo '<table border="0" cellspacing="0" cellpadding="2" width="100%" style="border: 0px solid black;">
    <tr>';
    for($i = 0; $i < $count; $i++)
    {
		echo '<td style="background: #CCCCFF; border-bottom: 1px solid black; font-weight: bold;">'.mysql_field_name($result, $i).'</td>';
    }
    echo '</tr>';
    while($data = mysql_fetch_array($result))
    {
        echo '<tr>';
        for($i = 0; $i < $count; $i++)
        {
            echo '<td style="border-bottom: 1px solid black;">'.$data[$i].'</td>';
        }
        echo '</tr>';
    }
    echo '</table><br><br>';
}

echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<table border="0" cellspacing="0" cellpadding="0">
	<tr>
		<td>
			<textarea name="sql" cols="50" rows="10">'.$_POST["sql"].'</textarea>
		</td>
	</tr>
	<tr>
		<td>
			<input type="submit" value="Send">
			<input type="reset" value="Reset">
		</td>
	</tr>
</table>
</form><br><br>';

if(isset($_POST["sql"]))
{
    $sql = mysql_real_escape_string($_POST["sql"]);
    
    $anweisung = explode(";",$sql);
    $anweisung = explode(";",$sql);
        
    for($i = 0; $i < count($anweisung); $i++)
    {
    	if(strpos($anweisung[$i],"SELECT"));
			sql_select($anweisung[$i]);
	}
}
?>


Gruß Radhad
 
Zurück