未定义的偏移量:1使用mysql_real_escape_string($ data [0])

时间:2014-05-23 02:51:26

标签: php mysql offset datetimeoffset

再好的一天伙计们。 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

1 个答案:

答案 0 :(得分:1)

你需要在传递的$ _GET值上使用urlencode / decode,这样它就不会在撇号后截断信息。这将解决您的问题。

您可以在上面发布的代码上使用解码,如下所示: $respo = urldecode($_GET['respo']);

您准备此声明的代码将是: $variable = urlencode($row['somethinghere']

现在,如果它包含撇号,它仍然会发送整个数据字符串。