2017-02-15 4 views
1

Ich erhalte eine Fehlermeldung zurück auf meine INSERT AbfrageInsert fataler Fehler Funktion bind_param()

Fatal error: Call to a member function bind_param() on boolean in...

obwohl ich nur Strings in den Tabellenspalten einfügen, die String-Werte erwarten :: VARCHAR(255)

Meine Tabelle sieht wie folgt aus:

+---------------+--------------+-----+------+---+--+--+ 
| id   | int(11)  | NO | PRI | | | | 
| username  | varchar(45) | YES | UNI | | | | 
| email_address | varchar(45) | YES | UNI | | | | 
| password  | varchar(255) | YES |  | | | | 
| role   | int(11)  | YES | NULL | 0 | | | 
| dashboard_id | int(11)  | YES | NULL | | | | 
+---------------+--------------+-----+------+---+--+--+ 

Und mein Php sieht wie folgt aus ...

$stmt = $conn->prepare("INSERT INTO users VALUES (?, ?, ?)"); 
    $stmt->bind_param('sss', $username, $emailAddress, $upassword); 

    $username = $_POST['username']; 
    $emailAddress = $_POST['email']; 
    $upassword = password_hash($_POST['upassword'], PASSWORD_DEFAULT); 

    $stmt->execute(); 

    printf("%d Row inserted.\n", $stmt->affected_rows); 

    $stmt->close(); 
    $conn->close(); 

UPDATE

Mein Verbindungscode: bei meinem lokalen Ende

$conn = new mysqli($db_host,$db_user,$db_password,$db_name); 
+0

'Fataler Fehler: Aufruf einer Memberfunktion bind_param() on boolean in ...' würde anzeigen, dass '$ stmt' false ist und Ihre' prepare' daher nicht funktioniert hat. – gabe3886

+0

Ich weiß das schon ... Irgendwelche Vorschläge ...? – PhpDude

+0

Haben Sie Ihre Verbindungsdaten überprüft? Versucht sie mit MySQL Workbench oder einer ähnlichen anderen Anwendung? – gabe3886

Antwort

2

Dies funktioniert: -

Struktur der Tabelle: -

Name   Type   Null Default Extra 
id    int(11)   No  None  AUTO_INCREMENT Primary Key 
user_name  varchar(256) No  None  
email_address varchar(256) No  None 
password  varchar(256) No  None 
role   int(11)   Yes  0 
dashboard_id int(11)   Yes  0 

Php Code: -

<?php 
error_reporting(E_ALL); 
ini_set('display_errors',1); 

$conn = new mysqli('*****','***','****','****'); 
$conn->set_charset("utf8"); 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
$_POST['username'] = 'anant'; // i have hard coded for checking 
$_POST['email'] = '[email protected]';// i have hard coded for checking 
$_POST['upassword'] = '[email protected]';// i have hard coded for checking 
if(!empty(trim($_POST['username'])) && !empty(trim($_POST['email'])) && !empty(trim($_POST['upassword']))){ 
$username = $_POST['username']; 
$emailAddress = $_POST['email']; 
$upassword = password_hash($_POST['upassword'], PASSWORD_DEFAULT); 

    if($stmt = $conn->prepare("INSERT INTO users (user_name,email_address,password) VALUES (?, ?, ?)")){ 

     $stmt->bind_param('sss', $username, $emailAddress, $upassword); 

     $stmt->execute(); 
     $stmt->close(); 
    }else{ 
     echo $conn->error; 
    } 
    $conn->close(); 
}else{ 
    echo "form values are not coming"; 
} 
?> 

Hinweis: -

habe ich das Problem, wird es über keine Spaltennamen innerhalb prepare() bereitstellt. Als ich echo $conn->error; tat, bekam ich diesen Fehler Column count doesn't match value count at row 1.

Also, wenn ich entsprechende Spaltennamen bereitgestellt alles gut und begann zu arbeiten.

Ich hoffe, es hilft.

+0

Ich bekomme immer noch nichts in der Datenbank das ist so seltsam ... – PhpDude

+0

Stellt sich heraus, die Datenbank war beschädigt ... – PhpDude

Verwandte Themen