Vor ein paar Jahren habe ich für einige meiner mobilen Apps ein Backend (PHP, um einige JSON-Daten zu erhalten) erstellt. Ich habe diesen Code seitdem nicht mehr angerührt. Jetzt hat es schon vor Wochen aufgeh?rt zu funktionieren. Ich bin kein Backend-Entwickler, daher habe ich hier nicht viel Erfahrung, aber vor ein paar Jahren dachte ich, es w?re besser, mein eigenes Backend zu erstellen, anstatt Firebase/Serverless zu verwenden ... was nicht meine beste Idee war: )
Was ich versucht habe:
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="robots" content="noindex, nofollow"> <title>One moment, please...</title> <style> body { background: #F6F7F8; color: #303131; font-family: sans-serif; margin-top: 45vh; text-align: center; } </style> </head> <body> <h1>Please wait while your request is being verified...</h1> <form id="wsidchk-form" style="display:none;" action="/z0f76a1d14fd21a8fb5fd0d03e0fdc3d3cedae52f" method="get"> <input type="hidden" id="wsidchk" name="wsidchk"/> </form> <script> (function(){ var west=+((+!+[])+(+!+[]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+[])+(+!+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![])+(+!+[]+[])), east=+((+!+[])+(+!+[]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+[])+(+![])+(+!+[]+!![]+[])+(+!+[]+!![])+(+!+[]+!![]+!![]+[])), x=function(){try{return !!window.addEventLis tener;}catch(e){return !!0;} }, y=function(y,z){x() ? document.addEventLis tener("DOMContentLoaded",y,z) : document.attachEvent("onreadystatechange",y);}; y(function(){ document.getElementById('wsidchk').value = west + east; document.getElementById('wsidchk-form').submit(); }, false); })(); </script> </body> </html>
Das ist meine PHP-Datei:
$response = array(); function saveResultOfQueryToArray($result){ global $response; $response['workouts'] = array(); while($row = mysqli_fetch_array($result)){ $temp = array(); // $temp['aufruf'] = $aufruf; $temp['error'] = false; $temp['workoutname'] = $row['workoutname']; $temp['duration'] = $row['duration']; ... array_push($response['workouts'],$temp); } } if($_SERVER['REQUEST_METHOD']=='GET') { $db = new DbOperation(); $users = $db->getHighestRatingWith31Results(); saveResultOfQueryToArray($users, $chooseMethod); } else { $response['error'] = true; $response['message'] = "Invalid Request"; } echo json_encode($response);
Kann mir jemand erkl?ren, was ich falsch mache/was ge?ndert werden kann?
看起來 if($_SERVER['REQUEST_METHOD'] == 'GET')
沒有 $response
。除非代碼中有更多內容,否則 $response
未定義。
if($_SERVER['REQUEST_METHOD']=='GET') { $db = new DbOperation(); $users = $db->getHighestRatingWith31Results(); saveResultOfQueryToArray($users, $chooseMethod); $response['error'] = false; $response['message'] = 'Whatever you want returned here.'; else { $response['error'] = true; $response['message'] = "Invalid Request"; } echo json_encode($response);
類似的東西應該可以解決問題!我還建議查看 HTTP 響應,例如 HTTP 405。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405
編輯:我看到了您的更新,很抱歉,但這引發(fā)了更多問題。也就是說,$db->getHighestRatingWith31Results();
是做什么的?函數(shù) saveResultOfQueryToArray()
接受一個參數(shù),但用法是給函數(shù)提供兩個參數(shù)? saveResultOfQueryToArray 正在調用 mysqli_fetch_array(),它需要一個 mysqli_result 實例。
這是我的建議:
saveResultOfQueryToArray()
返回 $response,要么考慮通過引用傳遞。 https://www.php.net/manual/en/language。 references.pass.php