0

我已经建立了一个网站来为我的小型企业提交时间表。它使用 SQL 语句通过 ODBC 将数据提交到 Microsoft Access 数据库。我现在注意到,每当我在描述框中使用单引号时,它都会给我一个错误。

我阅读了这个并且听到很多人说“参数化你的查询”,但我不确定如何做到这一点。

我的网站上有一个 HTML 文本框

<textarea name="JobDescription" cols="75" rows="8" id="otherpurch"></textarea><br>  

它是表单的一部分,并与其他各种东西一起提交。我将如何处理在此框中键入的描述中包含单引号?我有一个名为“submit_form”的 .php 文件,我认为必须在其中完成。参数化查询的一般程序是什么?我对此有点困惑。

非常感谢任何帮助!

这是数据从文本框发送到数据库的方式。

$JobDescription=$_POST['JobDescription'];
$JobDescription=stripslashes($JobDescription);
$JobDescription=mysql_real_escape_string($JobDescription);

//make connection to database, bail if no connection
$connection = odbc_pconnect('db','','');
if (!$connection) { exit("Connection Failed: " . $connection); }

//Send data (usually there are many other variables being sent, but I removed them
//for the purposes of showing you just the text being sent from the description box

$sql = "INSERT INTO TimeSheet ('$JobDescription')";
$rs = odbc_exec($connection, $sql);
if (!$rs) { exit("Error in SQL"); 
4

1 回答 1

1

您使用参数化 SQL 的意图是正确的,通过 ODBC 访问也支持这一点。

对于要使用的函数odbc_exec,请参阅: http:
//php.net/manual/en/function.odbc-prepare.php
http://php.net/manual/en/function.odbc-execute.php

$JobDescription=$_POST['JobDescription']; // no escaping needed!

$connection = odbc_pconnect('db','','');
if (!$connection) { exit("Connection Failed: " . $connection); }

$stmt = odbc_prepare($connection, "INSERT INTO TimeSheet (?)");
$rs = odbc_execute($stmt, array($JobDescription));
于 2012-12-29T00:20:36.017 回答