-1

我访问我的页面,通过 URL 传递一些参数:

www.mypage.com/page.php?aID=4091cdcd-773d-4ca5-bab2-41e1188870a9&sID=1_MX4yMjI1MTgxMn4xMjcuMC4wLjF-V2VkIERlYyAyNiAwOTo1MDoyNiBQU1QgMjAxMn4wLjg1MjA4MTF-&nam=Gab=Gab77777&tel=

然后在我的PHP代码中我有:

if(isset($_GET['sID'])) {
    $sID = $_GET['sID'];
}
if(isset($_GET['aID'])) {
    $aID = $_GET['aID'];
}
if(isset($_GET['nam'])) {
    $nam = $_GET['nam'];
}
if(isset($_GET['tel'])) {
    $tel = $_GET['tel'];
}

$nam检索and没有问题,$tel但总是得到一个空字符串。我试过使用双引号,但没有任何区别。$aID$sID(isset($_GET["aID"]))

字符串中是否有非法字符或您可以通过 URL 传递的变量大小有限制?如何获取变量$aID$sID

$query = "INSERT INTO myTable (ArchiveID, SessionID, Name, Tel) VALUES ('$aiD', '$siD', '$nam', '$tel' )";

echo $query;

Echo $query 的输出是:

INSERT INTO myTable (ArchiveID, SessionID, Name, Tel) VALUES ('', '', 'Gab', '7777777777' )

4

2 回答 2

4

测试您的网址,我得到以下结果:

大批
(
    [aID] => 4091cdcd-773d-4ca5-bab2-41e1188870a9
    [sID] => 1_MX4yMjI1MTgxMn4xMjcuMC4wLjF-V2VkIERlYyAyNiAwOTo1MDoyNiBQU1QgMjAxMn4wLjg1MjA4MTF-
    [nam] => 加布
    [电话] => 7777777777
)

因此,我不确定你得到一个空字符串是什么意思。您的代码中确实有错字,其中$tel引用$_GET['aID']. 我建议您验证您的代码。

我建议您也使用$_SERVER['REQUEST_METHOD']来验证您的脚本是否正在使用GET.

更新

根据您更新的查询,您的情况似乎不正确。变量名区分大小写。

$query = "INSERT INTO ... VALUES ('$aiD', '$siD', '$nam', '$tel' )";
                                     ^ ^

应该:

$query = "INSERT INTO ... VALUES ('$aID', '$sID', '$nam', '$tel' )";
  1. 开发 PHP 时,您必须启用最高级别的错误报告和日志记录
  2. 你必须检查你调用的方法的返回值,看看他们是否做了你认为他们做的事情。如果出现故障,您必须查找更多错误信息。
  3. 您必须查看准备好的语句以防止 SQL 注入。

是的,mysql_*功能已被弃用。不要将它用于新代码。

于 2013-01-04T21:09:15.273 回答
0

您注意到在您的 sql 语句中您没有调用您定义的变量:

$query = "INSERT INTO myTable (ArchiveID, SessionID, Name, Tel) VALUES ('$aiD', '$siD', '$nam', '$tel' )";

应该:

$query = "INSERT INTO myTable (ArchiveID, SessionID, Name, Tel) VALUES ('$aID', '$sID', '$nam', '$tel' )";

并且看起来 njk 更新了他的答案以反映这一点,因此他的答案应该归功于他。

于 2013-01-04T21:13:15.203 回答