使用PHP将数据插入MSSQL数据库


Insert Data into MSSQL DB using PHP

你好,我正在尝试使用PHP将数据插入MSSQL。我试过很多次想弄清楚可能是什么问题,但我似乎没有找到。是不是有什么地方不对劲或遗漏了?

 <?php
//pull form fields into php variables
$no = $_POST['no'];
$name= $_POST['name'];
$date = $_POST['date'];
$leave = $_POST['leave'];
$days= $_POST['days'];
$empno= $_POST['empno'];
//connect to sql
$dbc = mssql_connect('Server-PC','user','password','database')or die('Error connecting to
      the   SQL Server database.');
 // Input into staff database
  $query = "INSERT INTO dbo.[CAGD$Leave Plan] ([No_],[Employee No_],[Employee Name],
 [Leave Name],   [Start Date],[Leave Days],Satus) VALUES   
('$no','$name','$leave','$date','days','empno')";
$r esult = mssql_query($query,$dbc)or die('Error querying MSSQL database');
//close to sql
mssql_close($dbc);
echo $name . 'Your submission has been received<br />';
echo 'If you need change this request please contact your HR Manager<br />';
echo 'Thank you <br />';
echo 'HR Manager';
?>

我收到以下错误消息:警告:mssql_query()[function.msql query]:消息:对象名称"dbo.CAGD Plan"无效
(严重性16)在第110行的C:''examplep''htdocs''CAGD''leave_request.php 中

Warning: mssql_query() [function.mssql-query]: Query failed in C:'xampp'htdocs  
'CAGD'leave_request.php on line 110
Error querying MSSQL database

您可以使用SQLRV驱动程序而不是MSSQL驱动程序,然后尝试此

<?php 
$serverName = "serverName";
$options = array(  "UID" => "sa",  "PWD" => "Password",  "Database" => "DBname");
$conn = sqlsrv_connect($serverName, $options);
if( $conn === false )
     {
     echo "Could not connect.'n";
     die( print_r( sqlsrv_errors(), true));
     }
$no = $_POST['no'];
$name= $_POST['name'];
$query = "INSERT INTO dbo.Test
        (No_,FirstName)
        VALUES(?, ?)";
$params1 = array($no,$name);                       
$result = sqlsrv_query($conn,$query,$params1);
sqlsrv_close($conn);
?>

这更有用,你可以在这里了解更多:

https://msdn.microsoft.com/en-us/library/cc626305(v=sql.105).aspx

首先指定数据库连接。。。

mssql_connect('Server-PC','user','password','database')
like -> "localhost","root","XXXX", "DBNAME"

然后像一样查询

 $query = "INSERT INTO TABLENAME  (id,name) VALUES   
('$id','$name')";
$result = mssql_query($query,$dbc)

嗯,在我看来,表中有7个字段,但只提交了6个值——您缺少第一列的值[No_]。此外,最后一列satus(我想它应该是"status")没有反[]分隔符。返回的错误告诉您表的名称是错误的。是的,在PHP中,变量名是区分大小写的,应该是$leave——最好退出字符串并连接——类似于"bla bla".$leave."anything here with spaces or not"

这应该是一个变量吗?

$query = "INSERT INTO dbo.[CAGD$Leave Plan] ([No_],[Employee No
                               ^^^^^^

如果是这样,那么它在代码中显然是未定义的,并且生成的查询字符串将包含dbo.[CAGD Plan],而不是该变量中应该包含的任何值。如果$确实在表名中,那么它应该是CAGD'$Leave,这样$Leave就不会被视为变量。