簡體   English   中英

從表單插入數據以通過ODBC訪問

[英]Inserting data from forms to access by 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";
}
}
?>

您要插入兩次名字。 因此,列聲明與變量數不匹配

考慮為MS Access連接使用PHP的PDO ,這是傳遞參數和引發所需異常的更好處理程序,當然也可以避免SQL注入,特別是來自Web輸入的注入。 您可能需要在.ini文件中初始化PDO。

另外, ContactPersonIDRestaurantID可能是整數值,但您似乎要引用它們。 參數可幫助定義所需的數據類型,而不必擔心引號括起來或凌亂的字符串連接。

$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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM