我有一个
AJAX应用程序的以下部分,它没有错误,但屏幕上也没有显示任何内容,所以我不确定问题所在.直接从具有?cmd& id = 1的浏览器调用此页面应该返回,或者甚至在没有?cmd的情况下调用它应该返回cmd错误消息.
编辑:添加测试用例:我确实得到了cmd错误消息,但是当我传递& id = 1(1是一个有效的id)时,没有返回任何html,查看源是完全空白的.我是否错误地使用了回声或类似的东西?
edit2:将echo添加为第一行:无法看到第一个echo
edit3:在回到旧版本并再次进行所有更改之后,我现在在使用有效的cmd和id参数调用时获得测试字符集输出.我使用的代码与下面粘贴的代码相同.
代码:
<?PHP echo "hello world"; error_reporting(E_ALL); if (isset($_GET["cmd"])) $cmd = $_GET["cmd"]; else die("You should have a 'cmd' parameter in your URL"); $id = $_GET["id"]; $con = MysqLi_connect("localhost","user","password","db"); echo "test con"; if(!$con) { die('Connection Failed because of' .MysqLi_connect_error()); echo "test error"; } //$con->query("SET NAMES 'utf8'"); $con->set_charset("utf8")); echo "test charset"; if($cmd=="GetSALEData") { echo "test cmdifloop"; if ($getRecords = $con->prepare("SELECT * FROM SALES WHERE PRODUCT_NO = ?")) { echo "test recordifloop"; $getHtml = $con->prepare("SELECT PRODUCT_DESC FROM SALES WHERE PRODUCT_NO = ?"); $getHtml->bind_param("s",$id); $getHtml->execute(); $getHtml->bind_result($PRODUCT_DESC); $getRecords->bind_param("s",$id); $getRecords->execute(); $getRecords->bind_result($PRODUCT_NO,$PRODUCT_NAME,$SUBTITLE,$CURRENT_PRICE,$START_PRICE,$PRICE_COUNT,$QUANT_TOTAL,$QUANT_SOLD,$ACCESSSTARTS,$ACCESSENDS,$ACCESSORIGIN_END,$USERNAME,$BEST_PRICEDER_ID,$FINISHED,$WATCH,$BUYITNOW_PRICE,$PIC_URL,$PRIVATE_SALE,$SALE_TYPE,$ACCESSINSERT_DATE,$ACCESSUPDATE_DATE,$CAT_DESC,$CAT_PATH,$COUNTRYCODE,$LOCATION,$CONDITIONS,$REVISED,$PAYPAL_ACCEPT,$PRE_TERMINATED,$SHIPPING_TO,$FEE_INSERTION,$FEE_FINAL,$FEE_LISTING,$PIC_XXL,$PIC_DIASHOW,$PIC_COUNT,$ITEM_SITE_ID ); while ($getRecords->fetch()) { $ccodes = array( "1" => "USA","77" => "Germany","16" => "Austria","122" => "Luxemburg","193" => "Switzerland",); $conditions = array( "0" => "USA",); $country = $ccodes[$COUNTRYCODE]; if ( $country == "" ) $country = "Not applicable"; $columns = array('FINISHED','WATCH','PRIVATE_SALE','REVISED','PAYPAL_ACCEPT','PRE_TERMINATED','PIC_XXL','PIC_DIASHOW'); foreach($columns as $column) { $$column = $row[$column] ? 'YES' : 'NO'; } imageResize($PIC_URL,250,300); file_put_contents($id,file_get_contents($PIC_URL)); $html = htmlentities(json_encode($PRODUCT_DESC)); $shortDate = strftime("%d %m %Y",strtotime($ACCESSSTARTS)); echo "<h1>".$PRODUCT_NAME."</h1> <div id='leftlayer' class='leftlayer'> <p><strong>Username: </strong>".$USERNAME." <p><strong>PRODUCT Number: </strong>".$PRODUCT_NO." <p><strong>Subtitle: </strong>".$SUBTITLE." <p><strong>SALE Start: </strong>".$ACCESSSTARTS." <p><strong>SALE End: </strong>".$ACCESSENDS." <p><strong>SALE Type: </strong>".$SALE_TYPE." <p><strong>Category: </strong>".$CAT_DESC." </div> <div class='leftlayer2'> <p><strong>Condition: </strong> ".$CURRENT_PRICE." <p><strong>Total Items: </strong> ".$QUANT_TOTAL." <p><strong>Total Sales: </strong> ".$QUANT_SOLD." <p><strong>Start Price: €</strong> ".$START_PRICE." <p><strong>Buyitnow Price: €</strong> ".$BUYITNOW_PRICE." <p><strong>PRICEs: </strong> ".$PRICE_COUNT." <p><strong>Revised: </strong> ".$REVISED." </div> <div class='leftlayer2'> <p><strong>Private: </strong> ".$PRIVATE_SALE." <p><strong>Finished: </strong> ".$FINISHED." <p><strong>Cancelled: </strong> ".$PRE_TERMINATED." <p><strong>Paypal: </strong> ".$PAYPAL_ACCEPT." <p><strong>Country: </strong> ". $country ." <p><strong>Location: </strong> ".$LOCATION." <p><strong>Shipping to: </strong> ". $country ." </div> <div id='rightlayer'> <img src='".$PIC_URL."' width='".$imageSize["width"]."' height='".$imageSize["height"]."'> <p><a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p> </div> </div> </div>"; } } function imageResize($imageURL,$maxWidth,$maxHeight) { $imageSize["width"] = 0; $imageSize["height"] = 0; $size = getimagesize($imageURL); if ($size) { $imageWidth = $size[0]; $imageHeight = $size[1]; $wRatio = $imageWidth / $maxWidth; $hRatio = $imageHeight / $maxHeight; $maxRatio = max($wRatio,$hRatio); if ($maxRatio > 1) { $imageSize["width"] = $imageWidth / $maxRatio; $imageSize["height"] = $imageHeight / $maxRatio; return $imageSize; } else { $imageSize["width"] = $imageWidth; $imageSize["height"] = $imageHeight; return $imageSize; } } else { die(print_r(error_get_last())); } } }
第22行你有一个额外的括号
这个
$con->set_charset("utf8"));
需要这样
$con->set_charset("utf8");
两个未来的调试技巧.首先,您需要对Web主机进行shell访问,或者您需要在开发计算机上本地安装PHP.如果您正在运行Unix,那么您可能已经拥有它.打开终端并输入
PHP -v
//on *nix PHP yourfile.PHP //or on windows c:\path\to\PHP.exe yourfile.PHP
这将保留严重的语法错误.此外,谷歌/搜索此网站的“安装PHP本地教程”或类似的东西,以了解如何获得在您自己的机器上运行的Web服务器,MysqL数据库和PHP的完整副本.
第二个建议,如果您安装本地副本将更容易,是检查您的错误日志.即使PHP没有显示错误消息,错误仍会记录到某个地方的文件中.在您的情况下,您已经在日志文件中看到过类似的内容
PHP Parse error: Syntax error,unexpected ')' in foo.PHP on line 22