我在描述框中使用单引号时出现SQL错误

时间:2012-12-29 00:06:49

标签: php sql odbc parameterized

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

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

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

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

它是表单的一部分,并与其他各种内容一起提交。我如何处理在此框中输入的描述中包含单引号?我有一个名为&#39; submit_form&#39;的.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"); 

1 个答案:

答案 0 :(得分:1)

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

要使用的功能代替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));