• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP Warning: mysqli_query() expects at least 2 parameters, 1 given

Object Storage Arubacloud
0 głosów
460 wizyt
pytanie zadane 9 lipca 2022 w PHP przez kuczor Nowicjusz (150 p.)

Witam, zwracam się do was z prośbą o pomoc, a mianowicie próbuję zainstalować na swoim forum gier statystyki graczy, po stronie między serwerem a ftp nie ma problemu, problem występuję gdy z ftp plik musi wgrać się do bazy.
Napotkałem taki problem w error logu:
 

[09-Jul-2022 15:34:57 Europe/Warsaw] PHP Warning:  mysqli_query() expects at least 2 parameters, 1 given in /home/p582466/public_html/ranking/ffa/restore.php on line 55

Kod config.php wygląda tak:
 

<?php
/*
=====================================================
				MENSAGENS DE ERRO
=====================================================
*/
$msg[0] = "Can't Connect to DB Server, check settings!";
$msg[1] = "Not possible to select database! Is the name right? Does it exist?";
/*
=====================================================
					CONEXAO
=====================================================
*/

$sqlite_server = false; // ARE YOUR SERVER RUNNING THE PLUGIN AS SQLITE?

//(IF THE PLUGIN IS RUNNING AS MYSQL, PUT BELOW THE DATA FOR CONNECTING TO THE DATABASE THAT IS BEING USED BY THE PLUGIN)
$bd_user = "użytkownik bazy danych"; // DATABASE USER
$bd_password = "hasło";// DATABASE PASS
$bd = "nazwa bazy danych";// DATABASE
$host = "localhost";	// DATABASE HOST
$bd_table = "rankme"; // DATABASE TABLE BEING USED AT THE PLUGIN. (rankme_sql_table cvar). Default: rankme.

$ftp_server = "adres ip hosta ftp"; //FTP HOST
$ftp_user_name = "użytkownik ftp"; // FTP USER NAME
$ftp_user_pass = "hasło ftp"; // FTP PASS
$ftpDIR = "cstrike/"; // CSTRIKE FOLDER ON FTP

// Fazendo a conex�o com o servidor MySQL
$conexao = mysqli_connect($host,$bd_user,$bd_password) or die($msg[0]);
mysqli_select_db($conexao,$bd) or die($msg[1]);
?>

Oczywiście wszystko jest wypełnione odpowiednio, ale nie mam pojęcia jaki drugi parametr mam podać.
Nie za bardzo się na tym znam dlatego proszę o pomoc was, bardziej doświadczonych :)
Próbowałem szukać rozwiązań ale wszędzie kod się różni i nie wiem gdzie mam co dodać.
Wszystkie moje próby modyfikacji kodu skutkują błędem syntax error :(

Tak wygląda kod restore.php
 

<?php
include_once "config.php";
$DEBUG = false;

$conn_id = ftp_connect($ftp_server);
if(!$conn_id)
	die ("Couldn't connect to the ftp server!");

if(!ftp_login($conn_id, $ftp_user_name, $ftp_user_pass))
	die ("Couldn't log in to the ftp server!");
global $bd_table;
$backupFile[0]['file'] = 'up/rank.sql';
$backupFile[0]['table'] = $bd_table;

$filename = "rank.sql";
if (ftp_get($conn_id, "up/rank.sql", $ftpDIR . "/rank.sql", FTP_BINARY)) {
    if(isset($_GET['echo']) || $DEBUG)
		echo "Successfully received file<BR>";
	ftp_close($conn_id);
} else {


	if(isset($_GET['echo']) || $DEBUG){
		echo "There was a problem reading from the ftp or writing into the up folder. Testing if FTP file exist.<BR>";
		$contents = ftp_nlist($conn_id, $ftpDIR . "/.");
		$found = false;

		foreach($contents as $file){
			if($file == "rank.sql"){
				echo "rank.sql found. The problem is writing into the up folder.";
				$found = true;
				break;
			}

		}
		if(!$found){
			echo "rank.sql not found. The problem is reading from the FTP. Files:<BR>";
			var_dump($contents);
		}
	}
	ftp_close($conn_id);
	die("");
}
foreach ($backupFile as $table){
	$sql = "DROP TABLE `" . $table['table'] . "`;";
	try {
		mysqli_query($sql);
	} catch (Exception $e) {}

	$current = file_get_contents($table['file']);

	$query = explode("\n", $current);
	foreach($query as $sql){
		try {
			mysqli_query($sql);
		} catch (Exception $e) {}

	}

}

?>

 

1 odpowiedź

0 głosów
odpowiedź 9 lipca 2022 przez VBService Ekspert (253,100 p.)
wybrane 11 lipca 2022 przez kuczor
 
Najlepsza

W twoim zapisie

mysqli_query($sql);

brakuje drugiego wymaganego parametru, czyli inaczej zmiennej, która przechowuje identyfikator połączenia do bazy w mysql

 

Procedural style:

 

mysqli_query(connection, query, resultmode)

 

Parameter Values

Parameter Description
connection Required. Specifies the MySQL connection to use
query Required. Specifies the SQL query string
resultmode

Optional. A constant. Can be one of the following:

  • MYSQLI_USE_RESULT (Use this to retrieve large amount of data)
  • MYSQLI_STORE_RESULT (This is default)

 

<?php
  $connection = mysqli_connect("localhost","my_user","my_password","my_db");

  if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit();
  }

  $query = "SELECT * FROM Persons";
  if ($result = mysqli_query($connection, $query)) {
    echo "Returned rows are: " . mysqli_num_rows($result);
    mysqli_free_result($result);
  }

  mysqli_close($connection);
?>
komentarz 9 lipca 2022 przez kuczor Nowicjusz (150 p.)
Tak, także to znalazłem, lecz tak jak napisałem mój kod się różni i niestety nie potrafię się z tym uporać :(

Przepraszam jeśli nie można wklejać linków, znalazłem takie coś wcześniej:
https://www.w3schools.com/php/func_mysqli_query.asp
komentarz 9 lipca 2022 przez VBService Ekspert (253,100 p.)

Wygląda na to, że Twój brakujący parametr to

<?php
/*
=====================================================
                MENSAGENS DE ERRO
=====================================================
*/
$msg[0] = "Can't Connect to DB Server, check settings!";
$msg[1] = "Not possible to select database! Is the name right? Does it exist?";
/*
=====================================================
                    CONEXAO
=====================================================
*/
 
$sqlite_server = false; // ARE YOUR SERVER RUNNING THE PLUGIN AS SQLITE?
 
//(IF THE PLUGIN IS RUNNING AS MYSQL, PUT BELOW THE DATA FOR CONNECTING TO THE DATABASE THAT IS BEING USED BY THE PLUGIN)
$bd_user = "użytkownik bazy danych"; // DATABASE USER
$bd_password = "hasło";// DATABASE PASS
$bd = "nazwa bazy danych";// DATABASE
$host = "localhost";    // DATABASE HOST
$bd_table = "rankme"; // DATABASE TABLE BEING USED AT THE PLUGIN. (rankme_sql_table cvar). Default: rankme.
 
$ftp_server = "adres ip hosta ftp"; //FTP HOST
$ftp_user_name = "użytkownik ftp"; // FTP USER NAME
$ftp_user_pass = "hasło ftp"; // FTP PASS
$ftpDIR = "cstrike/"; // CSTRIKE FOLDER ON FTP
 
// Fazendo a conex�o com o servidor MySQL
$conexao = mysqli_connect($host,$bd_user,$bd_password) or die($msg[0]);
mysqli_select_db($conexao,$bd) or die($msg[1]);
?>

$conexao wstaw go w

mysqli_query($conexao, $sql);

 

komentarz 11 lipca 2022 przez kuczor Nowicjusz (150 p.)
Dziękuję bardzo, bardzo, bardzo serdecznie. Teraz działa.

Podobne pytania

0 głosów
1 odpowiedź 871 wizyt
pytanie zadane 17 listopada 2017 w PHP przez Vastuney Nowicjusz (160 p.)
–4 głosów
2 odpowiedzi 505 wizyt
0 głosów
1 odpowiedź 994 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...