WinInet模拟HTTP的POST请求出错
在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的
$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端的问题,像下面这么写就返回正确了:
<?phprequire "use_daoru.php";$top = $_REQUEST['top'];$query = "select id,name from index_activities where top=0";$result = mysql_query($query);//if(!$result){//$message = 'Invalid query: '.mysql_error()."\n";//$message.= 'Whole query: '.$query;//die($message);//}$num = mysql_num_rows($result);for($i=0;$i<$num;$i++){ $row = mysql_fetch_row($result); echo($row[0].":".$row[1].",");}?>
原来我写的代码是:
<?phprequire "use_daoru.php";$top = $_REQUEST['top'];$query = "select id,name from index_activities where top=$top";$result = mysql_query($query);//if(!$result){//$message = 'Invalid query: '.mysql_error()."\n";//$message.= 'Whole query: '.$query;//die($message);//}$num = mysql_num_rows($result);for($i=0;$i<$num;$i++){ $row = mysql_fetch_row($result); echo($row[0].":".$row[1].",");}?>
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']); 试试

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Der HTTP-Statuscode 520 bedeutet, dass der Server bei der Verarbeitung der Anfrage einen unbekannten Fehler festgestellt hat und keine genaueren Informationen bereitstellen kann. Wird verwendet, um darauf hinzuweisen, dass bei der Verarbeitung der Anforderung durch den Server ein unbekannter Fehler aufgetreten ist, der durch Serverkonfigurationsprobleme, Netzwerkprobleme oder andere unbekannte Gründe verursacht werden kann. Dies wird normalerweise durch Serverkonfigurationsprobleme, Netzwerkprobleme, Serverüberlastung oder Codierungsfehler verursacht. Wenn Sie auf einen Fehler mit dem Statuscode 520 stoßen, wenden Sie sich am besten an den Website-Administrator oder das technische Support-Team, um weitere Informationen und Unterstützung zu erhalten.

Verstehen Sie die Bedeutung des HTTP 301-Statuscodes: Häufige Anwendungsszenarien der Webseitenumleitung. Mit der rasanten Entwicklung des Internets werden die Anforderungen der Menschen an die Webseiteninteraktion immer höher. Im Bereich Webdesign ist die Webseitenumleitung eine gängige und wichtige Technologie, die über den HTTP-301-Statuscode implementiert wird. In diesem Artikel werden die Bedeutung des HTTP 301-Statuscodes und häufige Anwendungsszenarien bei der Webseitenumleitung untersucht. Der HTTP-Statuscode 301 bezieht sich auf eine permanente Weiterleitung (PermanentRedirect). Wenn der Server die des Clients empfängt

Lösung: 1. Überprüfen Sie den Inhaltstyp im Anforderungsheader. 3. Verwenden Sie das entsprechende Codierungsformat. 5. Überprüfen Sie die serverseitige Unterstützung.

Wie implementiert man HTTP-Streaming in C++? Erstellen Sie einen SSL-Stream-Socket mit Boost.Asio und der asiohttps-Clientbibliothek. Stellen Sie eine Verbindung zum Server her und senden Sie eine HTTP-Anfrage. Empfangen Sie HTTP-Antwortheader und drucken Sie sie aus. Empfängt den HTTP-Antworttext und gibt ihn aus.

HTTP-Statuscode 200: Erkunden Sie die Bedeutung und den Zweck erfolgreicher Antworten. HTTP-Statuscodes sind numerische Codes, die den Status einer Serverantwort angeben. Darunter zeigt der Statuscode 200 an, dass die Anfrage vom Server erfolgreich verarbeitet wurde. In diesem Artikel wird die spezifische Bedeutung und Verwendung des HTTP-Statuscodes 200 untersucht. Lassen Sie uns zunächst die Klassifizierung von HTTP-Statuscodes verstehen. Statuscodes sind in fünf Kategorien unterteilt, nämlich 1xx, 2xx, 3xx, 4xx und 5xx. Unter diesen zeigt 2xx eine erfolgreiche Antwort an. Und 200 ist der häufigste Statuscode in 2xx

Maschinelles Lernen macht Computergrafiksimulationen (CG) realistischer! Die Methode heißt Neural Flow Maps (NFM) und kann Rauch mit vier Wirbeln genau simulieren. Komplexere lassen sich auch leicht realisieren: Wissen Sie, in Zeiten von KI-Anwendungen, die über den ganzen Himmel fliegen, ist die CG-Physiksimulation immer noch das Richtige ist die Welt der traditionellen numerischen Algorithmen. △NFM simuliert „Überspringen“. Obwohl die Anwendung neuronaler Netze in CG atemberaubende visuelle Effekte erzeugen kann, können physikalische Eigenschaften nicht streng und robust beschrieben werden. △NFM simuliert „Tintentröpfchen“. Genau aus diesem Grund befindet sich die physikalische Simulation auf Basis neuronaler Netze noch im Proof-of-Concept-Stadium und die erzeugten Effekte sind weit von SOTA entfernt. Um dieses komplexe Problem zu lösen,

Lösung: 1. Wiederholen: Sie können eine Weile warten und es erneut versuchen, oder die Seite aktualisieren. 2. Überprüfen Sie die Serverauslastung: Überprüfen Sie die CPU-, Speicher- und Festplattenauslastung. Wenn die Kapazitätsgrenze überschritten ist, können Sie es versuchen um die Serverkonfiguration zu optimieren oder die Serverressourcen zu erhöhen: Sie können nur warten, bis der Server wieder normal ist. 4. Überprüfen Sie die Netzwerkverbindung. Überprüfen Sie, ob das Netzwerk stabil ist Geräte-, Firewall- oder Proxy-Einstellungen sind korrekt; 5. Stellen Sie sicher, dass die Cache- oder CDN-Konfiguration korrekt ist. 6. Wenden Sie sich an den Serveradministrator usw.

Titel: PHP-Codebeispiel: So verwenden Sie POST zur Übergabe von Parametern und zur Implementierung von Seitensprüngen. In der Webentwicklung ist es häufig erforderlich, Parameter über POST zu übergeben und sie auf der Serverseite zu verarbeiten, um Seitensprünge zu implementieren. PHP als beliebte serverseitige Skriptsprache bietet eine Fülle von Funktionen und Syntax, um diesen Zweck zu erreichen. Im Folgenden wird anhand eines praktischen Beispiels erläutert, wie PHP zum Implementieren dieser Funktion verwendet wird. Zuerst müssen wir zwei Seiten vorbereiten, eine für den Empfang von POST-Anfragen und Prozessparametern
