3

%s の値に上限を設定すると、SQL 構文エラーが発生します...どの部分が間違っている可能性があり、どのように修正するか..私のような初心者にとっては新しいように見えるので、修正してください

$insertSQL = sprintf('INSERT INTO kontrak (ID, NAME, T_LAHIR, Country) VALUES (%s,(UPPER(%s)), %s, %s)',

                       GetSQLValueString($_POST['Id'], 'int'),
                       GetSQLValueString($_POST['Nama'], 'text'),
                       GetSQLValueString($_POST['Tarikhlahir'], 'date'),
                       GetSQLValueString($_POST['Country'], 'text'));


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''')), '1983-12-15','42151566'(LONDON' at line 1
4

3 に答える 3

2

関数の 2 番目の部分でstrtoupper()またはucwords( )を使用します (最初の文字のみを大文字にする場合) sprintf()

このようにして、php は mysql よりも多くの文字列フォーマット関数を提供するため、挿入されたレコードをより詳細に制御できます。

于 2012-12-11T07:23:49.533 に答える
1

そこにアッパーを使用しないでください

$insertSQL = sprintf("INSERT INTO kontrak (ID, NAME, BIRTH, COUNTRY) VALUES (%s, %s, %s, %s)",

                   GetSQLValueString($_POST['Id'], "int"),
                   GetSQLValueString($_POST['Name'], "text"),
                   GetSQLValueString($_POST['Birth'], "date")),
                   strtoupper(GetSQLValueString($_POST['Country'], "text")));
于 2012-12-11T07:21:04.157 に答える
1

変化する:

UPPER('%s')

に:

UPPER(%s)

ここで既に %s パラメータを使用しており、一重引用符が構文エラーの原因となっています。

于 2012-12-11T07:23:46.967 に答える