Seite 1 von 2

Tabelle leeren sql befehl

Verfasst: 16.03.2022 23:21
von Dler
Hi,

Ich würde gerne per ACP die möglichkeit haben daß ich eine Tabelle leeren kann.

Wie müsste bitte der befehl sein in meiner module.php Datei um die Tabelle phpbb_ra_gamestat_periods zu leeren?

Ich hatte es so getestet

Im acp template

Code: Alles auswählen

<dl>
				<dt><label for="ra_periods">{L_PERIODS}</label><br /><span>{L_PERIODS_EXPLAIN}</span></dt>
				<dd>
					<label><input type="radio" class="radio" name="ra_periods" value="1" /> {L_YES}</label>
					<label><input type="radio" class="radio" name="ra_periods" value="0" checked="checked" /> {L_NO}</label>
				</dd>
			</dl>
			
module.php

Code: Alles auswählen

if ($request->variable('ra_periods', 0) === 1)
				{
					$sql = 'TRUNCATE ' . RA_GAMESTAT_PERIODS_TABLE;
					$db->sql_query($sql);					
				}
				
Aber dann bekomme ich einen fehler das die Tabelle nicht existiert.

[ externes Bild ]

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 14:11
von Dref
Verwenden Sie diese SQL-Abfrage

Code: Alles auswählen

TRUNCATE TABLE `RA_GAMESTAT_PERIODS`
Sobald die Abfrage ausgeführt wird, enthält die Tabelle keine Datensätze mehr.
Bitte erstellen Sie eine Sicherungskopie der Tabelle, bevor Sie sie leeren.

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 17:45
von 3Di

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . RA_GAMESTAT_PERIODS_TABLE);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . RA_GAMESTAT_PERIODS_TABLE);
		break;
	}
}

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 18:38
von Dler
@3DI

Leider bekomme ich immer noch eine fehlermeldung.

Code: Alles auswählen

[phpBB Debug] PHP Warning: in file [ROOT]/ext/xxxxx/xxxx/acp/acp_module.php on line 842: Use of undefined constant RA_GAMESTAT_PERIODS_TABLE - assumed 'RA_GAMESTAT_PERIODS_TABLE' (this will throw an Error in a future version of PHP)

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table 'xxxxxx.RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

SQL

TRUNCATE TABLE RA_GAMESTAT_PERIODS_TABLE

[ externes Bild ]

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 18:56
von chris1278
Versuch das malö so:

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . ra_gamestat_periods_table);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . ra_gamestat_periods_table);
		break;
	}
}
oder so

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . _ra_gamestat_periods_table);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' .  _ra_gamestat_periods_table);
		break;
	}
}
eventuell iegt es daran das du den tabellen namen nur grossbichstaben hast. Auf dem bild ist der aber in kleinbuchstaben. Da ich aber nicht so viel ahnung von sql habe ist das auch nur ne vermutung.

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 19:00
von Dler
Nein leider keine änderung chris.

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 19:08
von Mahony
Hallo
Ich würde es ja mal so versuchen

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . RA_GAMESTAT_PERIODS);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . RA_GAMESTAT_PERIODS);
		break;
	}
}

Grüße: Mahony

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 19:08
von chris1278
Ok das problem ist wahrscheinlich das der tabellenbn präfix nicht geladen wird.

Daher findet der die tabelle nicht.

Also wenn ich von dem Standard ausgehe das der phpbb ist dann versuch den code mal so zu gestallten:

Code: Alles auswählen

if ($request->variable('ra_periods', 0))
{
	// Clear table
	switch ($db->get_sql_layer())
	{
		case 'sqlite3':
			$db->sql_query('DELETE FROM ' . PHPBB_RA_GAMESTAT_PERIODS_TABLE);
		break;

		default:
			$db->sql_query('TRUNCATE TABLE ' . PHPBB_RA_GAMESTAT_PERIODS_TABLE);
		break;
	}
}
Ansonsten ersetze phpbb durch den präfix den du in deinem forum nutzt.

@mahony

bei seiner fehlermeldung hier:
Dler hat geschrieben: 17.03.2022 18:38

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table 'xxxxxx.RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

SQL

TRUNCATE TABLE RA_GAMESTAT_PERIODS_TABLE

müsste eigentlich dass hier stehen:

Table 'xxxxxx.phpbb_RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

Daher vermute ich das der die tabelle wegen des präfixes schon nicht findet. Da dieser anscheinend nicht mit integriert wird.

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 19:10
von Dler
Nein geht auch beides leider nicht.

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table 'xxxxxx.PHPBB_RA_GAMESTAT_PERIODS_TABLE' doesn't exist [1146]

SQL

TRUNCATE TABLE PHPBB_RA_GAMESTAT_PERIODS_TABLE

BACKTRACE

Re: Tabelle leeren sql befehl

Verfasst: 17.03.2022 19:13
von chris1278
Was steht den in deiner config.php drin als präfix:

so sieht die eigentlich original aus

Code: Alles auswählen

<?php
// phpBB 3.3.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'phpbb\\db\\driver\\mysqli';
$dbhost = '';
$dbport = '';
$dbname = 'test';
$dbuser = 'root';
$dbpasswd = '';
$table_prefix = 'phpbb_';
$phpbb_adm_relative_path = 'adm/';
$acm_type = 'phpbb\\cache\\driver\\file';

@define('PHPBB_INSTALLED', true);
@define('PHPBB_ENVIRONMENT', 'production');
// @define('DEBUG_CONTAINER', true);

und unter

$table_prefix =

das was dort angegeben ist musst du auch benutzen. das phpbb von mir war nur der standard. wenn du einen anderen nutzt musst du dies natürlich anpassen.