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

在函数的第二部分使用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 回答