Mam napisany skrypt, aby zbierać e-mail i wynik z gry i wysłać go do bazy danych. Do tej pory podczas rozwijania użyłem MAMP i wszystko działało dobrze. Teraz przesłałem kompilację na Direct Admin, skonfiguruj bazę danych na PHPMYAdmin, zmieniłem hasło nazwy bazy danych itp w moim pliku PHP, ale nie działa! Umieściłem wszystkie pliki w tym samym folderze w FTP (pliki zabudowy jedności i folder SQLConnect, który ma skrypt PHP w środku), ale tak, nie zaktualizuje bazy danych.

To jest baza danych.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
public class Database : MonoBehaviour
{
public InputField emailField;
public InputField inputFieldRef;   
public Button submitButton;
// Start is called before the first frame update
public void CallSignup()
{
    StartCoroutine(Signup());
}

IEnumerator Signup()
{
    WWWForm form = new WWWForm();
    form.AddField("email",emailField.text);
    emailField.text = string.Empty;
    form.AddField("score",GameManager.score);
    UnityWebRequest www = UnityWebRequest.Post("http://localhost/sqlconnect/signup.php",form);
    yield return www.SendWebRequest();
    
    if(www.isNetworkError || www.isHttpError) {
        Debug.Log(www.error);
    }
    else {
        Debug.Log("Form upload complete!");
    }
}
public void VerifyInput()
{
    submitButton.interactable = (emailField.text.Length >= 8);
}
}

A oto mój plik php

<?php

$servername = "localhost";
$username = "database username";
$password = "password";
$dbname = "database";

$conn = mysqli_connect($servername,$username,$password,$dbname);

if (mysqli_connect_errno())
{
    echo "1: Connection Failed";
    exit();
}

$email = msqli_real_escape_string($conn, $_POST["email"];
$emailclean = filter_var($email,FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | 
FILTER_FLAG_STRIP_HIGH);
$score = $_POST["score"];

$updatequery = "UPDATE testscore SET score='$score' WHERE email ='$email'";
mysqli_query($conn , $updatequery) or die("FAILED ".__LINE__." : ".mysqli_error($conn));

echo "0";

?>
0
stratos la 16 październik 2020, 22:00

1 odpowiedź

Najlepsza odpowiedź

Po raz kolejny po uruchomieniu inspektora zobaczyłem to, ponieważ nie miałem Wildarda DNS otwarty, nie mógł się połączyć i pokazać. Więc dodałem nagłówek

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Methods: GET, POST');

header("Access-Control-Allow-Headers: X-Requested-With");

I teraz widzę wszystko w porządku

0
Dharman 7 grudzień 2020, 11:35