从表单插入数据以通过ODBC

时间:2018-04-17 20:38:08

标签: php sql ms-access odbc

我尝试使用ODBC来插入数据。但是,它不起作用
这是我的代码。我该如何解决这个问题?  

<?php

if(isset($_POST['submit']))
{   $ContactPersonID=$_POST['ContactPersonID']
$FirstName=$_POST['First name'];
$LastName=$_POST['Last name'];
$PhoneNumber=$_POST['PhoneNumber'];
$RestaurantID=$_POST['RestaurantID'];
echo $ContactPersonID ." ".$FirstName." ".$LastName." ".$PhoneNumber." ".$PhoneNumber." ".$RestaurantID ;
$con=odbc_connect("Online Food  Delivery Database","", "");
$sql="INSERT INTO RestaurantPeopleContact 
    (ContactPersonID,FirstName,LastName,PhoneNumber,RestaurantID) 
    VALUES ('$ContactPersonID','$FirstName','$LastName','$FirstName','$PhoneNumber','$RestaurantID')";

if(odbc_exec($con,$sql))
{
    echo "Data saved.";
}
else
{
    echo "Error";
}
}
?>

2 个答案:

答案 0 :(得分:0)

您要插入两次名字。 因此,列声明与变量数

不匹配

答案 1 :(得分:0)

考虑使用PHP的PDO进行MS Access连接,这是一个更好的处理程序,用于传递参数和引发所需的异常,当然也可以避免SQL注入,特别是来自Web输入。您可能需要在.ini文件中初始化PDO。

此外, ContactPersonID RestaurantID 可能是整数值,但您希望引用它们。参数有助于定义所需的数据类型,而无需担心引用封装或杂乱的字符串连接。

$ContactPersonID = $_POST['ContactPersonID']
$FirstName = $_POST['First name'];
$LastName = $_POST['Last name'];
$PhoneNumber = $_POST['PhoneNumber'];
$RestaurantID = $_POST['RestaurantID'];

$database = "C:\Path\To\Database\Online Food Delivery Database.accdb";

# PREPARED STATEMENT WITH PLACEHOLDERS
$sql = "INSERT INTO RestaurantPeopleContact 
        (ContactPersonID, FirstName, LastName, PhoneNumber, RestaurantID) 
        VALUES (?, ?, ?, ?, ?)";

try {
    $dbh = new PDO("odbc:DSN=MS Access Database;DBq=$database;");
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sth = $dbh->prepare($sql);  

    # BIND PARAMETERS
    $sth->bindParam(1, $ContactPersonID, PDO::PARAM_INT);
    $sth->bindParam(2, $FirstName, PDO::PARAM_STR);
    $sth->bindParam(3, $LastName, PDO::PARAM_STR);
    $sth->bindParam(4, $PhoneNumber, PDO::PARAM_STR);
    $sth->bindParam(5, $RestaurantID, PDO::PARAM_INT);

    $sth->execute(); 
}
catch(PDOException $e) {  
    echo $e->getMessage()."\n";
}
# close the connection
$dbh = null;