我已经建立了一个网站来为我的小型企业提交时间表。它使用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");
答案 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));