2016-05-20 4 views
0

php --- Warning: sprintf(): Zu wenig Argumente in --- auf der Leitung 86 abfragen war leerWarning: sprintf(): Zu wenig Argumente in Query war leer

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
 
    $updateSQL = sprintf("UPDATE tankers_index SET sname=%s, dwt=%s, flag=%s, company=%s, black=%s, char=%s, type=%s, age=%s, type=%s, hull=%s, class=%s, cap=%s, sulp=%s, sts=%s, tmsa=%s WHERE imo=%s", 
 
\t \t \t \t \t GetSQLValueString($_POST['sname'], "text"), 
 
\t \t \t \t \t GetSQLValueString($_POST['dwt'], "text"), 
 
         GetSQLValueString($_POST['flag'], "text"), 
 
         GetSQLValueString($_POST['company'], "text"), 
 
         GetSQLValueString($_POST['black'], "text"), 
 
         GetSQLValueString($_POST['char'], "text"), 
 
         GetSQLValueString($_POST['age'], "text"), 
 
         GetSQLValueString($_POST['type'], "text"), 
 
         GetSQLValueString($_POST['hull'], "text"), 
 
         GetSQLValueString($_POST['class'], "text"), 
 
         GetSQLValueString($_POST['cap'], "text"), 
 
         GetSQLValueString($_POST['sulp'], "text"), 
 
         GetSQLValueString($_POST['sts'], "text"), 
 
         GetSQLValueString($_POST['tmsa'], "text"), 
 
         GetSQLValueString($_POST['imo'], "int"));

bitte kann mir jemand helfen

+0

Können Sie Ihre Antwort so bearbeiten, dass Details zu dem, was Sie gerade tun, und der Frage, die Sie dazu haben, enthalten sind? –

+0

Die Frage wurde aufgrund des Kommentars von OP als Duplikat markiert: [* "Danke nun, dass andere denken: Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe entspricht" char = 'no', age = '1234', type = 't', rumpf = 'd', class = 'g', cap = '47453', sulp = 'uuiuyui' in Zeile 1 "*] (http: //stackoverflow.com/questions/37351327/warning-sprintf-too-few-arguments-in-query-was-empty?noredirect=1#comment62219113_37351585). 'char' ist ein MySQL reserviertes Wort und erfordert besondere Aufmerksamkeit. Wickeln Sie es in Ticks '\' 'oder benennen Sie es in etwas anderes um. –

Antwort

0

Bei der Abfrage benötigen Sie 16 Parameter, aber für sprintf stellen Sie 15 nur

+0

danke jetzt zeige es andere denken: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax für 'char =' no 'zu verwenden, age =' 1234 ', type =' t ', hull =' d ', class =' ​​g ', cap = '47453', sulp = 'uuiuyui' in Zeile 1 –

+0

CHAR ist reserviertes Wort https://dev.mysql.com/doc/refman/5.5/en/keywords.html und Sie sollten Ihre Spalten nicht mit reservierten Wörtern aufrufen. Wenn Sie dies tun, müssen Sie diese Namen zu zitieren - siehe meinen Link – nospor

0

Sie haben type=%s twi ce in Ihrer UPDATE Aussage.

+0

Danke nun zeigen andere denken: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax für 'char =' no 'zu verwenden, age =' 1234 ', type =' t ', hull =' d ', class =' ​​g ', cap = '47453', sulp = 'Uuiuyui' in Zeile 1 –

+0

Dafür benötige ich etwas mehr Kontext. Aus dem Fehler scheint es, als ob Sie versuchen, einen Wert für ein Feld, aber vom falschen Typ zu speichern. Höchstwahrscheinlich "char = 'no'". Stellen Sie in Ihrer Datenbankstruktur sicher, dass die Werte, die Sie speichern möchten, mit dem Typ übereinstimmen, den Sie erwarten. Z.B. 'age' ist eine ganze Zahl, also ist 1234 akzeptabel. ABER wenn' char' vom Typ char ist, dann ist 'no' nicht akzeptabel. Stellen Sie außerdem sicher, dass Sie den ersten 'type =% s' ausgewählt haben, um mit den' sprint_f' Parametern übereinzustimmen, die Sie übergeben, und nicht die zweite. –