2011-12-18 14 views
0

私は私のデータベーステーブルのいずれかを更新しようとしたとき、次のエラーメッセージを取得しておいてください。の生成SQL(): "引数が少なすぎます"

idrr = 167 

age_notes = 'Enumerate, Louisvilleluminary, Nacho Friend, Bulls and Bears, Bricklayer, Activity Report, Interactif, Soundman).\r\n 

\r\nBashford Manor S (gr-III, 6f, defeating Flatter Than Me, Brassy Boy, Grand Slam Andre, Soundman, Westrock Gold, Vito Filitto, Even Wilder).\r\n 

\r\nA maiden special weight race at Churchill Downs (5f, by 2 3/4, defeating Thiskyhasnolimit, Red Rally, Dublin, Criminal Offense, Congar, Horst, Prospective Union, Victorystart, Harley\'s Heat).' 

警告:はsprintf()[function.sprintf] :ライン305 クエリに/data/19/1/60/63/1875552/user/2038041/htdocs/vinery/Admin/upload_stallion.phpで引数が少なすぎますが右の警告の上

空でしたエコーですsprintf()で使用される2つの変数のうちの1つです。私がなぜこの特定のUPDATE文句を言わない作業を把握することはできません

 $idrr = GetSQLValueString($_POST['id1'], "int"); 
     $associated_horse = GetSQLValueString($_POST['associated_horse1'], "int"); 
     $year = GetSQLValueString($_POST['year1'], "text"); 
     $age = GetSQLValueString($_POST['age1'], "int"); 
     $starts = GetSQLValueString($_POST['starts1'], "int"); 
     $first = GetSQLValueString($_POST['first1'], "int"); 
     $first_sw = GetSQLValueString($_POST['first_sw1'], "int"); 
     $second = GetSQLValueString($_POST['second1'], "int"); 
     $second_sp = GetSQLValueString($_POST['second_sp1'], "int"); 
     $third = GetSQLValueString($_POST['third1'], "int"); 
     $third_sp = GetSQLValueString($_POST['third_sp1'], "int"); 
     $age_notes = GetSQLValueString($_POST['age_notes1'], "text"); 
     $age_text = GetSQLValueString($_POST['age_text1'], "text"); 
     $earned = GetSQLValueString($_POST['earned1'], "text"); 
     echo ("idrr = " . $idrr . "<br/>"); 
     echo ("age_notes = " . $age_notes); 




     $insertSQL = sprintf("UPDATE race_records SET age_notes = $age_notes WHERE rr_id = %s", GetSQLValueString($idrr, "int")); 

     mysql_select_db($database_XXXXXX, XXXXXX); 
     $Result = mysql_query($insertSQL, $HDAdave) or die(mysql_error()) 

:ここ

は私のPHPファイルからセクションです。 誰かが私が間違っているのを見ることができますか?

答えて

1

あなたは親指のルールは、$ VAR-置換文字列ではsprintfを混ぜることではない$age_notes%s

$insertSQL = sprintf("UPDATE race_records SET age_notes = '$age_notes' WHERE rr_id = '%s'", GetSQLValueString($idrr, "int")); 
+0

しかし、これは 'sprintf()'エラーには役に立ちません。 –

+0

エコーGetSQLValueString($ _ POST ['id1']、 "int")を追加しました。 とage_notesと%sの周りに ''を入れてください。 – user1028866

+0

応答は次のようになる: 'スペースの切り捨て正しい文字列' – user1028866

0

の周りにバッククォートまたは単一引用符を置きたいかもしれません。だから、$age_notesは%記号が含まれているため、あなたはおそらく、このエラーメッセージを取得し、それがsprintfをめちゃくちゃだ。

$insertSQL = sprintf("UPDATE race_records SET age_notes = '%s' WHERE rr_id = '%s'", mysql_real_escape_string($age_notes), mysql_real_escape_string(GetSQLValueString($idrr, "int"))); 

または

$insertSQL = "UPDATE race_records SET age_notes = '" . mysql_real_escape_string($age_notes) . "' WHERE rr_id = '" . mysql_real_escape_string(GetSQLValueString($idrr, "int")) . "'"; 

のいずれかを使用する必要があります

@ cenanozenさんの引用符使用に関するアドバイスもあります(あなたの特定の質問には答えませんが)。

mysql_real_escape_string()などを使用してSQLのすべての文字列を引用することを忘れないでください。

関連する問題