暑假接了老师一个项目,是通过unity实现AR远程装配的维修。其实功能不算复杂,主要是通过mysql实现通信比较困难一些。因为没有系统的学习过sql语言,只是简单的用过,所以第一个部分就遇到了一个问题。
php已经实现了与数据库之间的通信。但是,没办法从数据库中捕获数据:
测试代码:test.php
<?php
$link=mysqli_connect("127.0.0.1","root","");
if(!$link) echo "FAILD!连接错误,用户名密码不对";
else echo "OK!可以连接";
mysqli_select_db($con, "unity");
$result = $con->query("SELECT COUNT(*) FROM users WHERE username='admin'");`在这里插入代码片`
?>
在调试过程中,浏览器报错为:
最终发现错误原因有两个,首先是,因为在mysql中,命名的字段名和系统命名的字段名称不一致。造成查找的时候出了问题。
第二个原因就比较秀逗了。在写php文件的时候:
//连接数据库
<?php
$con = new mysqli("127.0.0.1", "root", "");
if (!$con) die('Could not connect: ' . mysqli_error($con));
mysqli_select_db($con, "unity");
$con->query("set character set 'utf8'"); // 设置字符集格式
$con->query("set character set 'utf8'");
if (empty($_POST['username']))
{
echo "901";
return;
} // 检查用户名是否存在
$result = $con->query("SELECT COUNT(*) FROM users WHERE username='" . $_POST['username'] . "'");
$row = $result->fetch_row();
if ($row[0] == 1)
{
// 用户名存在
$result = $con->query("SELECT is_expert + 1, nickname FROM users WHERE username='" . $_POST['username'] . "' AND PASSWORD='" . $_POST['password'] . "'");
$row = $result->fetch_row();
if ($row[0] == 2)
{
echo '{"result":2, "nickname":"' . $row[1] . '"}'; // 专家
}
else if ($row[0] == 1)
{
echo '{"result":1, "nickname":"' . $row[1] . '"}'; // 普通工程师
}
else
{
echo '{"result":902, "nickname":""}'; // 密码错误
}
}
else
{ // 用户名不存在
echo '{"result":901, "nickname":""}';
}
mysqli_close($con);
?>
看见最上面那个注释了没有?
把他写在了php文件外部。编译器疯狂报错,我就视而不见,还觉得自己调的挺好。。。实际上,这个写在文件体外面的字段,作为post的返回值一起返回了json。真扯淡啊。。。。
不过,虽然被这个bug卡了好几天(有点丢人哈),不过,为此我尝试了unity的各种调试方法,感觉还是很好的。