我试图通过从我的Android应用程序上传SQLite数据库的内容来填充MySQL数据库。但是,当我这样做时,MYSQL数据库不会被填充。
我试图用来填充的PHP脚本如下(注意用户名,密码等是故意遗漏,但绝对正确)。是否有语法错误或问题是什么?
<?php
if(isset($_GET['sessionId']) && isset($_GET['game']) && isset($_GET['name']) && isset($_GET['avgMed']) && isset($_GET['maxMed']) && isset($_GET['avgAttn']) && isset($_GET['maxAttn']) && isset($_GET['score']) && isset($_GET['date'])
&& isset($_GET['rawFile']) && isset($_GET['EEGFile']) && isset($_GET['medFile']) && isset($_GET['attFile']))
{
$mysql_host = "";
$mysql_database = "";
$mysql_user = "";
$mysql_password = "";
// Provide host ip, mysql user name, password
$con = mysql_connect($mysql_host,$mysql_user,$mysql_password);
// Provide database name.
mysql_select_db($mysql_database);
$sessionId=$_GET['sessionId'];
$game=$_GET['game'];
$name=$_GET['name'];
$avgMed=$_GET['avgMed'];
$maxMed=$_GET['maxMed'];
$avgAttn=$_GET['avgAttn'];
$maxAttn=$_GET['maxAttn'];
$score=$_GET['score'];
$date=$_GET['date'];
$rawFile=$_GET['rawFile'];
$EEGFile=$_GET['EEGFile'];
$medFile=$_GET['medFile'];
$attFile=$_GET['attFile'];
$flag="false";
if(!empty($game) && !empty($name) && !empty($date) && !empty($sessionId))
{
$sql="Insert into `GameDetails` (`SessionID`,`Game`,`Username`,`AvgMeditation`,`MaxMeditation',`AvgAttention` ,`MaxAttention`,`Score`,`Date`,`RawFile' ,`EEGFile', `MedFile', `AttFile') values
('$sessionId','$game','$name','$avgMed','$maxMed','$avgAttn','$maxAttn','$score','$date','$rawFile','$EEGFile','$medFile','$attFile') ";
$result=mysql_query($sql);
if($result)
{
$count= mysql_affected_rows();
if($count > 0)
{
$flag="true"; //result true
}
}
mysql_close($con);
echo json_encode(array("result"=>$flag));
}
}
?>
我最近也在phpMyAdmin中更改了MySQL数据库并添加了四个新列,但我确信它们在脚本中被正确引用。
答案 0 :(得分:6)
你有多个拼写错误:
[...snip...],`Date`,`RawFile' ,`EEGFile', `MedFile', `AttFile') values
^----------^----------^----------^--- here
这些应该是反引号(`
),而不是'
单引号。
如果您的脚本中有任何类型的错误处理,那么您已经被告知语法错误:
$result=mysql_query($sql) or die(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^
最重要的是,您很容易受到sql injection attacks的攻击,因此这个查询无法正常工作,因为您的语法错误会阻止任何注入攻击的发生他是第一名。
永远不会假设在处理外部资源时取得成功,例如:一个数据库。总是假设失败,并将成功视为一个惊喜。对于查询来说,确切地说有一种方法可以成功,并且几乎有无数的理由让它们失败。