好的我正在使用Unity为他们之间的数据库创建我的应用程序和MSSQL我都有一个PHP Exchange服务器。
所以基本上我遇到了这段代码的问题
using UnityEngine;
using System.Collections;
public class NewSession : MonoBehaviour {
string userLoginFile = "http://"ServerIP"/UnitySQL/NewSession.php?";
public UnityEngine.UI.Text NewSess;
string userid = "";
string session = "";
void OnGUI()
{
session = NewSess.text;
userid = PlayerPrefs.GetString ("UserId");
}
public void Insert()
{
if (session == "") {
StartCoroutine (LoginUser (userid));
} else {
print("DAMNSON");
}
}
IEnumerator LoginUser(string user)
{
WWW login = new WWW (userLoginFile + "UserId=" + user);
print (userLoginFile + "UserId=" + user);
yield return login;
if (login.error == null)
{
string[] credentials = login.text.Split('/');
foreach(string str in credentials)
{
string[] creds = str.Split ('=');
for(int i=0; i < creds.Length; i++)
{
print ("winner");
}
}
}
}
}
现在我不知道它为什么会出现这个问题,因为当我使用localhost并在我的服务器上进行php交换时它可以正常工作我可以清楚地看到脚本打印是正确的,因为如果我将其复制并粘贴到地址标题它做了它应该没有问题。 这是PHP脚本
<?php
$userid = $_REQUEST['UserId'];
$user = 'user';
$pass = 'Pass';
$server = 'IP';
$database = 'MyTable';
// No changes needed from now on
$connection_string = "DRIVER={SQL Server};SERVER=$server;DATABASE=$database";
$conn = odbc_connect($connection_string,$user,$pass);
/*$q = "DECLARE @return_value int
EXEC @return_value = [dbo].[InsertAnswersCheck]
@varQuestionOptionId = '$QOI',
@varUser = '$userid'
SELECT 'Return Value' = @return_value";*/
$q = "INSERT INTO usersession (UserId) VALUES ($userid)";
$result = odbc_exec($conn,$q);
$num_rows = odbc_num_rows($result);
if($num_rows > 0)
{
} else {
}
?>
有一段时间它一直是个问题,但我无法弄清楚出了什么问题。如果有人可以帮助那将是太棒了。
请注意它在我的localhost上使用相同的脚本,如果设置它将要求用户登录两次。但是,当我在服务器脚本上执行此操作时,它只会让您陷入循环,直到您复制并粘贴打印代码。
答案 0 :(得分:0)
我不知道,但你可以试试:
print (userLoginFile + "UserId=" + user);
打印出来的内容。 print(login.text);
放在yield return login;
之后(在下一个if
内)。else
与if (login.error == null)
print("Err: " + "login.error.ToString());
上
echo
。输出形式1和2应该相同。