没有数据使用php插入到mssql数据库中

时间:2014-05-19 13:38:51

标签: php sql sql-server

我想使用php将表单中的数据插入到mssql 2012中。

enter image description here

上图显示我安装了php的驱动程序以使用mssql,并在测试连接后成功。

以下是为插入而编写的脚本:

$serverName = "SUPERMAN";

$connectionInfo = array('Database'=>'xikwambene', "UID"=>"develop", "PWD"=>"develop");
$conn = sqlsrv_connect($serverName, $connectionInfo);

if($conn) {
    echo "Connection established.<br />";
}else {
    echo "Connection could not be established.<br />";
    die(print_r(sqlsrv_errors(), true));
}


if(empty($_POST) === false && empty($errors)=== true)
        {

            $id = $_POST['id'];
            $name = $_POST['name'];

            $query = "INSERT INTO dbo.test (id,name)
                        VALUES  ('$id','$name')GO";

            $result = sqlsrv_prepare($conn,$query)or die('Error querying MSSQL database');
            sqlsrv_execute($result);





            //redirect
            header('Location: Address_insert.php');
            exit();                                 
        }


?>

现在问题是没有任何内容被插入到数据库中,并且它成功地重定向到

Address_insert.php

请协助。它是我第一天使用php和mssql

3 个答案:

答案 0 :(得分:1)

if(empty($_POST) === false && empty($errors)=== true)
        {

            $id = $_POST['id'];
            $name = $_POST['name'];
            print_r($_POST);



            $query = "INSERT INTO dbo.test (id,name)
                        VALUES  (?,?)";

                $params = array($id, $name);        
            $stmt = sqlsrv_query( $conn, $query, $params);

            if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
                }

答案基于以下信息:http://www.php.net/manual/en/function.sqlsrv-query.php

答案 1 :(得分:0)

在此代码之后:

 $id = $_POST['id'];
 $name = $_POST['name'];

添加:

$id = $_POST['id'];
$name = $_POST['name'];
print_r($_POST) 

查看脚本是否收到通过$ _POST发送的php变量并注释:

//header('Location: Address_insert.php'); so you can see the print.

这种方法对我来说总能给出结果。

祝你好运!

答案 2 :(得分:0)

    $query = "INSERT INTO dbo.test (id,name)
                VALUES  ('$id','$name')GO";


   $result = sqlsrv_prepare($conn,$query)or die('Error querying MSSQL database');

此处,$query 与预备语句不兼容。您没有在预准备语句中为查询分配参数,而是使用?等占位符。如果您希望使用准备好的语句,那么您是以错误的方式进行的。如果您希望使用常规查询,则需要删除sqlsrv_prepare ( )代码行。