2011-12-14 109 views
1

我一直在寻找答案。我一直在与其他人交叉引用我的代码。我似乎没有看到任何明显的错误...mySQL插入语句不工作?

我的数据库没有更新,我的数据库什么都不做。哦,页面也没有任何功能......这很令人沮丧,因为我只是使用记事本++,并且无法查明错误。我也使用XAmpp,并且所有值都与我所做的一致。

The .post statement (Using jQuery 1.7.1): 
    //Make sure DOM is loaded before running jQuery based code: [STATIC CODE] 
$(document).ready(function(){ 

    $('#uploadbtn').click(function() { 

     //Parse name and song. 
     var name = $('#songname').val(); 
     var song = $('#songupload').val(); 

     $.ajax(
     { 
      type: 'POST', 
      data: 'db/upload.php?name=' + name + 'song=' + song, 
      success: function(res) { 
       $('#nav-playlist').html(res); 
      } 
     } 
     ) 

    }); 

}); 



Now here is my php file: 

<?php 

/*Connection to database. 
    First with mysql_connect (to log in). Then selecting the master database. 
*/ 
echo "Upload.php accessed..."; 
$connection = mysql_connect("localhost", "root", "root") or die (mysql_error()); 
$database = mysql_select_db("betadb") or die(mysql_error()); 

//Properties (to be inserted into database). 
$name = mysql_real_escape_string($_POST["name"]); 
$song = mysql_real_escape_string($_POST["song"]); 

//Insertion formula for mySQL 
$query = "INSERT INTO songs SET name= '$name' song='$song' "; 

if (mysql_query($query)){ 
echo "Success"; 
} 
else { 

} 

?> 

其他注意事项: 歌曲表由ID,姓名,歌曲的(按顺序)。 宋是BLOB数据类型,因为它是用来存储.mp3s

+3

尝试返回mysql_error(),另请参阅SQL注入。你的实现绝对不安全。 – Xorlev 2011-12-14 06:18:04

+0

你的歌曲表是什么样的? – 2011-12-14 06:18:28

+0

是否尝试输出查询并分别在您的mysql客户端上运行它? – Arfeen 2011-12-14 06:19:19

回答

3

问题是与以下line

data : 'db/upload.php?name='+name+'song='+song, 

数据应该是包含的值的阵列,诸如

var data 
data["name"] = name 
data["song"] = song 

的$。Ajax调用也不见了这是需要至于我记得执行请求

url: 'db/upload.php' 
1

为了调试它
1)不要print_r($_POST);检查你有没有什么要插入
2)然后,而不是
$result = mysql_query($query, $connection) or die ("Unsucessful");
不要
$result = mysql_query($query, $connection) or die (mysql_error());
得到确切的错误并搜索错误修复

1
 
    $name = mysql_real_escape_string($_POST["name"]); //Assign to name & song variables. 
    $song = mysql_real_escape_string($_POST["song"]); 

//Insertion formula for mySQL 
$query = "INSERT INTO songs VALUES ('$name', '$song')"; 

$result = mysql_query($query, $connection) or die ("Unsucessful"); 

1

最好使用SET,对于一些条件更容易,jQuery的命令使用$.ajax,你可以试试这个

对JavaScript/JQuery的

$(function(){ 
    $('#uploadbtn').click(function(){ 
     var name = $('#songname').val(); 
     var song = $('#songupload').val(); 
     $.ajax({ 
      type :'POST', 
      data : 'db/upload.php?name='+name+'song='+song, 
      success :function(res){ 
       $('#nav-playlist').html(res); 
      } 
     }); 
    }); 
}); 

和Insert命令在PHP

$name = mysql_real_escape_string($_POST["name"]); 
$song = mysql_real_escape_string($_POST["song"]); 

$query = "INSERT INTO songs SET name='$name' song='$song'"; 
if(mysql_query($query)){ 
    // some process if success 
}else{ 
    // some proses if not 
} 

使用mysql_real_escape_string来过滤数据插入之前,数据库

2

尝试指定的列。

$query = "INSERT INTO songs (youcoulmn1,youcolumn2) VALUES ('$name', '$song')"; 

参见:

PHP MySQL Insert Into

问候

1

周围变量的单引号可能导致该问题..检查一下..

1

URL参数,该行

$query = "INSERT INTO songs SET name= '$name' song='$song' "; 

应该

$query = "INSERT INTO songs SET name= '$name', song='$song' "; 

注重逗号!

而且也:

data: 'db/upload.php?name=' + name + 'song=' + song, 

至少应为:

data: 'db/upload.php?name=' + name + '&song=' + song, 

因为字段之间没有分隔符现在。