2011-12-14 110 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, 

因爲字段之間沒有分隔符現在。