2016-12-20 4 views
0

Verbindung einzugehen Unten ist mein Beispielcode für mein PHP-Programm, und meine Datenbank wurde bereits erstellt.Versuchen, von iOS zu MySQL-Datenbank mit PHP (HTTP POST)

createteam.php:

<?php 
$response = array(); 

if($_SERVER['REQUEST_METHOD']=='POST'){ 

//getting values 
$teamName = $_POST['name']; 
$memberCount = $_POST['member']; 

//including the db operation file 
require_once '../includes/DbOperation.php'; 

$db = new DbOperation(); 

//inserting values 
if($db->createTeam($teamName,$memberCount)){ 
    $response['error']=false; 
    $response['message']='Team added successfully'; 
}else{ 

    $response['error']=true; 
    $response['message']='Could not add team'; 
} 

}else{ 
$response['error']=true; 
$response['message']='You are not authorized'; 
} 
echo json_encode($response); 

config.php:

<?php 

define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'iphone'); 

DbConnect.php:

<?php 

class DbConnect 
{ 
private $conn; 

function __construct() 
{ 
} 

/** 
* Establishing database connection 
* @return database connection handler 
*/ 
function connect() 
{ 
    require_once 'Config.php'; 

    // Connecting to mysql database 
    $this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME); 

    // Check for database connection error 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    // returing connection resource 
    return $this->conn; 
} 
} 

DbOperation.php:

<?php 

class DbOperation 
{ 
private $conn; 


function __construct() 
{ 
    require_once dirname(__FILE__) . '/Config.php'; 
    require_once dirname(__FILE__) . '/DbConnect.php'; 
    // opening db connection 
    $db = new DbConnect(); 
    $this->conn = $db->connect(); 
} 

//Function to create a new user 
public function createTeam($name, $memberCount) 
{ 
    $stmt = $this->conn->prepare("INSERT INTO team(name, member) values(?, ?)"); 
    $stmt->bind_param("si", $name, $memberCount); 
    $result = $stmt->execute(); 
    $stmt->close(); 
    if ($result) { 
     return true; 
    } else { 
     return false; 
    } 
} 

} 

Jedoch, wenn ich HTTP-POST-Methode verwenden, mit Postman in Chrome heißt es, diese

Notice: Undefined index: name in D:\xampp\htdocs\TestServ\api\createteam.php on line 9

Notice: Undefined index: member in D:\xampp\htdocs\TestServ\api\createteam.php on line 10

Warning: mysqli::__construct(): (HY000/1049): Unknown database 'iphone' in D:\xampp\htdocs\TestServ\includes\DbConnect.php on line 20 Failed to connect to MySQL: Unknown database 'iphone' Warning: mysqli::prepare(): Couldn't fetch mysqli in D:\xampp\htdocs\TestServ\includes\DbOperation.php on line 20

Fatal error: Uncaught Error: Call to a member function bind_param() on null in D:\xampp\htdocs\TestServ\includes\DbOperation.php:21 Stack trace: #0 D:\xampp\htdocs\TestServ\api\createteam.php(18): DbOperation->createTeam(NULL, NULL) #1 {main} thrown in D:\xampp\htdocs\TestServ\includes\DbOperation.php on line 21

Was bedeutet das, und was soll ich ändern?

+0

Mögliche Duplikate von [PHP: "Notice: Undefinierte Variable" und "Notice: Undefined Index"] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined- Index) Beginnen Sie mit dieser Frage. – Ohgodwhy

Antwort

0

Ihre ersten beiden Fehler werden dadurch verursacht, dass dieser zwei Linien:

$teamName = $_POST['name']; 
$memberCount = $_POST['member']; 

Der Fehler (Undefined index) sagt Ihnen, dass Sie einige nicht vorhandene Variablen, in diesem Fall name und member von Ihrem $_POST[] variabel. Stellen Sie sicher, dass Ihre POST-Anfrage korrekt erfolgt ist, siehe undefined variable für weitere Informationen.

Ihr dritter Fehler (Warning: mysqli::__construct(): (HY000/1049)) wird verursacht, weil in Ihrem Datenbanksystem keine Datenbank mit der Bezeichnung iphone vorhanden ist. Überprüfen Sie, ob Sie sie korrekt eingegeben haben oder ob Sie noch keine tatsächliche Datenbank mit dem Namen iphone erstellt haben.

Der letzte Fehler wird dadurch verursacht, dass die ersten beiden Fehler, da name und member sind nicht (richtig) in der POST-Anforderung definierte sie auf NULL eingestellt und die mysqli Bibliothek funktioniert wie das nicht.