有人可以帮忙吗?我确实得到了与db的连接并且可以检索数据和“post”,唯一的断点是ContactID记录,它是主要的和必需的。我相信它必须对我的Alter表行做些什么,我只是不知道在哪里。
以下是该方案:
这是php代码:
if(isset($_GET['action']))
{
if($_GET['action'] == 'add')
{
// this is where inserting data beggins
$insertSql = "INSERT INTO sys.CONTACT (LASTNAME, FIRSTNAME, EMAIL)
VALUES (?,?,?)";
$params = array(("Alter table sys.CONTACT add ProgramID int IDENTITY(9000001,1) NOT NULL, CONTACTID AS ('CCRMS'+CONVERT(varchar(7),ProgramID,(0)))"),
&$_POST['lastName'],
&$_POST['firstName'],
&$_POST['emailAddress']);
$stmt = sqlsrv_query($conn, $insertSql, $params);
if($stmt === false)
{/*Handle the case of a duplicte e-mail address.*/
$errors = sqlsrv_errors();
if($errors[0]['code'] == 2601)
{
echo "The e-mail address you entered has already been used.</br>";
}
/*Die if other errors occurred.*/
else
{
die(print_r($errors, true));
}
}
else
{
echo "Registration complete.</br>";
}
}}
答案 0 :(得分:0)
你的例外是:
字符串或二进制数据将被截断。声明已经终止。
您的ALTER字符串实际上已放入LASTNAME列。 SQL Server告诉您,您的长字符串已被截断为LASTNAME列的长度。
您基本上是为数组提供4个字符串值。前三个被接受作为声明的参数。一个或多个不符合它试图装入桌子的列的长度。
请检查这些列的varchar()
定义。它们是否比提供的琴弦小?
请改用:
$params = array(&$_POST['lastName'],
&$_POST['firstName'],
&$_POST['emailAddress']);