【发布时间】:2011-05-02 21:57:26
【问题描述】:
有人可以帮忙吗?我确实连接到 db 并且可以检索数据和“发布”,唯一的断点是 ContactID 记录,它是主要的和必需的。我相信它与我的 Alter 表格线有关,我只是不知道在哪里。
场景如下:
- 表单是用php编写的。
- 表单正在向 MSSQL 2005 发布数据
- ContactID 不能为空,需要自动分配。
- 提交时我收到异常:字符串或二进制数据将是 截断。声明已终止。
这里是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>";
}
}}
【问题讨论】:
-
sys模式中的表如何?我认为 SQL Server 不允许这样做。但您也不应该仅仅为了插入新行而运行ALTER TABLE语句。 (尽管我怀疑它可能只是试图将整个ALTER TABLE字符串插入LASTNAME)
标签: php sql-server forms alter-table