WinInet模拟HTTP的POST请求出错
程序员文章站
2024-01-06 15:00:22
...
在VS2012里面设置断点跟踪执行,发现请求该php文件获取的不是正确的返回字串,而是如下出错信息:
Invalid query:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Whole query:
select id,name from index_activities where top=0
这段信息是我在PHP的
语句行后面,“if”请求不成功才输出的,显然是mysql请求没成功,且可以确定,调用该PHP文件是成功的。
但是当我在网页中用同样的参数调用同一个PHP文件时(GET方式),返回值则是正确的。
我php文件中获取传参是用的
所以POST和GET参数应该都可以同样获取的。
不知道可能是哪里出了问题?用WinInet传参会造成这个请求字串有什么异常吗?
连接正确啊,不正确就返回unable to connect to mysql了,就不会执行到下面的请求,也不会出现MySQL的请求出错信息了。
而我现在调试不明白的这个HTTP请求,到底哪里不一样,我把原本由变量决定的参数都写死了,仍然返回说mysql请求不正确:
原来我写的代码是:
Invalid query:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Whole query:
select id,name from index_activities where top=0
这段信息是我在PHP的
$result = mysql_query($query);
语句行后面,“if”请求不成功才输出的,显然是mysql请求没成功,且可以确定,调用该PHP文件是成功的。
但是当我在网页中用同样的参数调用同一个PHP文件时(GET方式),返回值则是正确的。
我php文件中获取传参是用的
$top = $_REQUEST['top'];
所以POST和GET参数应该都可以同样获取的。
不知道可能是哪里出了问题?用WinInet传参会造成这个请求字串有什么异常吗?
回复讨论(解决方案)
数据库连接正确吗?
数据库连接正确吗?
连接正确啊,不正确就返回unable to connect to mysql了,就不会执行到下面的请求,也不会出现MySQL的请求出错信息了。
另有一个同样的模拟HTTP请求,也有参数,返回就是正确的:
void CDllValidateDlg::ValidateAPerson(char* Name, char* Code){ CString post_data; post_data.Format("userid='%s'&name='%s'",Code,Name); //请求的附加参数 CString result; //返回的结果 CString post_page = "test_id_validater/validateid.php"; //请求的php PostHttpPage(result,post_page,post_data); AfxMessageBox(result);}
而我现在调试不明白的这个HTTP请求,到底哪里不一样,我把原本由变量决定的参数都写死了,仍然返回说mysql请求不正确:
void CDllValidateDlg::getActs(HTREEITEM root){ CString post_data="top=0";// char top[10];// itoa(ActivitiesTree.GetItemData(root),top,10);// post_data.Format("top=%s",top); CString result; CString post_page = "test_id_validater/GetActivities.php";// AfxMessageBox("post_page:"+post_page+", "+"post_data:"+post_data); PostHttpPage(result, post_page, post_data); AfxMessageBox(result); …… ……
感觉好像是PHP端的问题,像下面这么写就返回正确了:
原来我写的代码是:
Invalid query:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Whole query:
select id,name from index_activities where top=0
这个信息分明是数据库报的错!
如果 $query = "select id,name from index_activities where top=0"; 可以
而 $query = "select id,name from index_activities where top=$top"; 不可以
这就表示 $top 无值或不是数字
$top = $_REQUEST['top']; 改为 $top = intval($_REQUEST['top']); 试试
推荐阅读
-
受的许多模拟的http请求,求解决方法。
-
WinInet模拟HTTP的POST请求报错
-
php模拟asp中的XmlHttpRequest实现http请求的代码_PHP
-
WinInet模拟HTTP的POST请求出错
-
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路_php实例
-
ASP模拟POST请求异步提交数据的方法
-
php curl模拟post请求和提交多维数组的示例代码_PHP
-
php自定义类fsocket模拟post或get请求的方法_PHP
-
java模拟http请求的错误问题整理
-
PHP使用stream_context_create()模拟POST/GET请求的方法