再好的一天伙计们。 APOSTROPHES让我神经紧张。请帮帮我们!当RESPO列上有一个APOSTRPHE字“OFFICE'S”时,我收到此错误。
Notice: Undefined offset: 1 in xxx:\xxxx\www\ptoms2\reports\view_reports.php on line 14
Notice: Undefined offset: 1 in xxx:\xxxx\www\ptoms2\reports\view_reports.php on line 15
我的第14行和第15行是这个代码,它产生错误行:
$month = date("m", strtotime($data[1]));
$year = date("Y", strtotime($data[1]));
总结我的所有view_reports.php如下:
<?php
$respo = $_GET['respo'];
$data = explode("+", ($respo));
$month = date("m", strtotime($data[1]));
$year = date("Y", strtotime($data[1]));
$viewrecord = "SELECT dv.*, dv.respo, (pr.pr_gsis_c + pr.pr_gsis_l) AS deduction FROM tbl_dv dv LEFT OUTER JOIN tbl_payroll pr on dv.dv_id = pr.dv_id LEFT OUTER JOIN tbl_payroll tpr on tpr.dv_id = dv.dv_id WHERE dv.respo='".mysql_real_escape_string($data[0])."' && year(dv.date_added)=$year && month(dv.date_added)=$month ";
$run_viewrecord = mysql_query($viewrecord) or die(mysql_error());
{
etc....
提前感谢你。我这个错误持续了一个星期所以..我从来没想过只是这个APOSTROPHES犯这个错误..请帮忙!
编辑:这是我的实际代码..我试图注入mysql_real_escape_string也许这是大多数APOSTROPHES错误的解决方案。但是没什么工作..这是DROPDOWN生成的报告。在report.php中,我选择了一个RESPO,并将在我选择的那个月分别收集所有RESPO ..但我有一个RESPO是PROV'L BUDGET OFFICE。什么PROV'L包含APOSTROPHE ..当我根据此RESPON生成报告时,我收到了该错误..并且地址是这样的:
http://xxxxx/xxxxxx/reports/view_reports.php?respo=PROV
它应该像没有撇号的样本:
http://xxxxx/xxxxx/reports/view_reports.php?respo=BIPC%2B2014-02-04+10%3A53%3A04
答案 0 :(得分:1)
你需要在传递的$ _GET值上使用urlencode / decode,这样它就不会在撇号后截断信息。这将解决您的问题。
您可以在上面发布的代码上使用解码,如下所示:
$respo = urldecode($_GET['respo']);
您准备此声明的代码将是:
$variable = urlencode($row['somethinghere']
现在,如果它包含撇号,它仍然会发送整个数据字符串。