2016-10-30 2 views
-1

Ich habe eine Eingabeform namens register.php mit einem Eingabefeld namens 'input1'. ich möchte den Wert von input1 abrufen und in einer Datenbank speichern. Wenn der Benutzer auf den Submit-Button von register.php klickt, wird er in ein anderes Formular mit dem Namen demo.php umgeleitet, das den eingegebenen Wert im Eingabefeld input1 in einer Datenbank speichern soll.Warnung: mysqli_query() erwartet Parameter 1 als mysqli, String als Datenbank

Aus irgendeinem Grund

ich die folgende Fehlermeldung erhalten: Warnung: mysqli_query() erwartet 1 Parameter Mysqli, string in C gegeben sein: \ xampp \ htdocs \ myapp \ demo.php auf Linie 21 für Demo. php;

demo.php:

<?php 
//Step1 
$db = mysql_connect('localhost','root','','forms1') 
or die('Error connecting to MySQL server.'); 

$db_selected = mysql_select_db('forms1' , $db); 

if(! $db_selected) { 

    die('db not selected'. mysql_error()); 
} 

echo "connected"; 


$value =$_POST['input1']; 


$sql =" INSERT INTO demo (input1) VALUES ('$value') "; 

mysqli_query($sql , $db); 

?> 

register.php:

<form action ="demo.php" method ="post" /> 

<p> Input 1:<input type ="text" name ="input1" /> </p> 
<input type ="submit" value ="submit"> 

</form> 
+2

Sie verwechselt nur 'mysql & mysqli'.use' mysqli' anstelle von 'mysql'.mysql' ist ab der neuesten Version von PHP veraltet. –

Antwort

0

Wenn Sie die mysqli_query Funktion in der Dokumentation suchen, werden Sie sehen, dass der erste Parameter der Datenbank Verbindungsressource sein muss (http://php.net/mysqli_query). Es sieht so aus, als hättest du gerade deine Parameter vertauscht. Es sollte sein:

mysqli_query($db, $sql);

Außerdem sollten Sie die mysqli_select_db und mysqli_connect Funktionen (vgl http://php.net/mysqli_select_db, http://php.net/mysqli_connect) statt mysql_select_db und mysql_connect (seit msyql_select_db und mysql_connect werden depricated) werden. Wenn Sie mysqli_select_db wechseln bemerken, dass der erste Parameter ist auch die Datenverbindungsressource, so wäre es:

$db = mysqli_connect('localhost','root',''); $db_selected = mysqli_select_db($db, 'forms1');

oder gerade:

$db = mysqli_connect('localhost','root','forms');

By the way, Sie sollte Parameterwerte nicht direkt an Ihre Abfrage übergeben. Sie sollten mit Prepared Statements werden: http://php.net/manual/en/mysqli.prepare.php

Wenn Sie nicht vorbereitete Anweisungen verwenden, können Sie das Risiko von SQL-Injection-Angriffe ausführen (siehe http://www.acunetix.com/websitesecurity/sql-injection/)

+0

Ich habe sie so umgestellt: mysqli_query ($ db, $ sql); aber ich bekomme immer noch diese Warnung: Warnung: mysqli_query() erwartet Parameter 1 zu sein mysqli, Ressource in C gegeben: \ xampp \ htdocs \ myapp \ demo.php in Zeile 32 – user3289032

+0

@ user3289032 Lesen Sie den Rest der Antwort. Sie müssen alle msyqli_-Funktionen verwenden (z. B. mysqli_select_db, mysql_connect usw.) – Cully

Verwandte Themen