Php MySQLi没有显示任何错误

Php MySQLi没有显示任何错误,php,mysql,mysqli,Php,Mysql,Mysqli,我已经试着解决这个问题好几个小时了,只是不知道我做错了什么。循环不会循环(没有任何内容被回送),但是当我在phpmyadmin中运行查询时,它工作得很好。 数据库信息也很好。 不幸的是,mysqli根本没有输出任何错误 非常感谢您的帮助 <?php ini_set('display_errors', '1'); error_reporting(E_ALL); set_time_limit(0); $db = new mysqli('localhost', 'xxx', 'xxx', 'x

我已经试着解决这个问题好几个小时了,只是不知道我做错了什么。循环不会循环(没有任何内容被回送),但是当我在phpmyadmin中运行查询时,它工作得很好。 数据库信息也很好。 不幸的是,mysqli根本没有输出任何错误

非常感谢您的帮助

<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
set_time_limit(0);

$db = new mysqli('localhost', 'xxx', 'xxx', 'xxx');

if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

$sql = <<<SQL
    SELECT * FROM 
    `zips`
SQL;


if(!$result = $db->query($sql,MYSQLI_STORE_RESULT)){
    echo  $result->num_rows; // nothing outputted here
    while($row = $result->fetch_assoc()){
        $zip    = $row['zip'];        
        $url = "http://www.webservicex.net/uszip.asmx/GetInfoByZIP?USZip=".$zip;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        $result = curl_exec($ch);

        curl_close($ch);

        $xmlobj = simplexml_load_string($result);
        $city = $xmlobj->Table->CITY;
        $state = $xmlobj->Table->STATE;
        $timezone = $xmlobj->Table->TIME_ZONE;
        $areacode = $xmlobj->Table->AREA_CODE;

        echo "city:" . $city;die();

        $sql2 = <<<SQL
            INSERT INTO zips
            (zip,city,state,timezone,areacode)
            VALUES('{$zip}','{$city}','{$state}', '{$timezone}', '{$areacode}')
SQL;
        if(!$result2 = $db->query($sql2)){
            die('There was an error running the query [' . $db->error . ']');
        }
    }
} else {
        die('There was an error running the query [' . $db->error . ']');
}

这是您的问题伙伴

  echo "city:" . $city;die();  ///script stops.

     .....

 if(!$result2 = $db->query($sql2)){ 
在这个块中运行查询之前,它将提前结束脚本

从技术上讲,你也可以不受惩罚

    if(!$result2 = $db->query($sql2)){
但是很难读懂(双重否定),我会改成这样

 if(false === ($result2 = $db->query($sql2))){
正如你所说的,你说的是
如果(!false==true)
,它将传递假值并输出错误ect

正如
你的常识所提到的,你可能不在这个块中,但是在不知道第一个查询的结果是什么的情况下,(在发布的代码块中运行需要为false),很难说。第一个查询可能是错误的

 if(!$result = $db->query($sql,MYSQLI_STORE_RESULT)){
       .....
为了进一步解释,上面的行需要返回false,然后使用
not如果它下面的if块中的代码能够运行,则为true。但是,在这种情况下(如果不是false),将生成此输出

   ....
} else {
    die('There was an error running the query [' . $db->error . ']');
}

更可能是错误的组合。

这是您的问题伙伴

  echo "city:" . $city;die();  ///script stops.

     .....

 if(!$result2 = $db->query($sql2)){ 
在这个块中运行查询之前,它将提前结束脚本

从技术上讲,你也可以不受惩罚

    if(!$result2 = $db->query($sql2)){
但是很难读懂(双重否定),我会改成这样

 if(false === ($result2 = $db->query($sql2))){
正如你所说的,你说的是
如果(!false==true)
,它将传递假值并输出错误ect

正如
你的常识所提到的,你可能不在这个块中,但是在不知道第一个查询的结果是什么的情况下,(在发布的代码块中运行需要为false),很难说。第一个查询可能是错误的

 if(!$result = $db->query($sql,MYSQLI_STORE_RESULT)){
       .....
为了进一步解释,上面的行需要返回false,然后使用
not如果它下面的if块中的代码能够运行,则为true。但是,在这种情况下(如果不是false),将生成此输出

   ....
} else {
    die('There was an error running the query [' . $db->error . ']');
}


更可能是错误的组合。

这应该是可行的。您如何将此用作,
http://localhost
文件://
?看起来您的用户名和密码都是x,但我会打开显示错误
ini\u集(“显示错误”,1)@ArtisticPhoenix's用于隐藏真实凭证,PHP是一种松散类型的语言。@Machavity:heredocs有什么问题?更改字符串的生成方式不会更改字符串<代码>$x='foo'
$x=@YourCommonSense对于你发布的副本的回答非常讽刺,我引用你的话:“使用die()或echo或任何其他函数无条件地在屏幕上打印错误消息。PHP已经可以无需帮助地回显了。”-OP确实使用了
die()
,一开始就不应该用它。我重新提出了这个问题。这应该行得通。您如何将此用作,
http://localhost
文件://
?看起来您的用户名和密码都是x,但我会打开显示错误
ini\u集(“显示错误”,1)@ArtisticPhoenix's用于隐藏真实凭证,PHP是一种松散类型的语言。@Machavity:heredocs有什么问题?更改字符串的生成方式不会更改字符串<代码>$x='foo'
$x=@YourCommonSense对于你发布的副本的回答非常讽刺,我引用你的话:“使用die()或echo或任何其他函数无条件地在屏幕上打印错误消息。PHP已经可以无需帮助地回显了。”-OP确实使用了
die()
,一开始就不应该用它。我重新开始了这个问题。这里不是我的反对票,但我可以做出一个真正的疯狂猜测,这是从哪里来的。OP明确表示,他们没有看到任何结果。虽然这段代码至少应该说出“城市:”这个词:@yourcomsense,那么你为什么不回答关于结束问题的问题呢?应该重新开放。依我拙见如果你不这样做,那么我会,也不会继续,当我这样做的时候,你会因为这个问题而被击倒或被标记。这是因为骰子在sql查询之前,换句话说,由于骰子放错了位置,脚本没有执行sql就结束了。因此,没有sql被执行,因此没有错误或成功的可能。不可能,我觉得我仍然是正确的。如果是这样的话,其他代码都不会执行。意识到这是唯一的代码,我们必须假设一些输出是由该块生成的,因为回声城是一个安全的赌注。要么将
城市
作为输出,要么将此错误
die('运行查询时出错['.$db->error.]')来自第一个查询块。正如他们所说,没有错误,我的假设是安全的。我在这里没有投反对票,但我可以做出一个真正的猜测,从哪里来。OP明确表示,他们没有看到任何输出。虽然这段代码至少应该说出“城市:”这个词:@yourcomsense,那么你为什么不回答关于结束问题的问题呢?应该重新开放。依我拙见如果你不这样做,那么我会,也不会继续,当我这样做的时候,你会因为这个问题而被击倒或被标记。这是因为骰子在sql查询之前,换句话说,由于骰子放错了位置,脚本没有执行sql就结束了。因此,没有sql被执行,因此没有错误或成功的可能。不可能,我觉得我仍然是正确的。如果是这样的话,其他代码都不会执行。意识到这是唯一的代码,我们必须假设一些输出是由该块生成的,因为回声城是一个安全的赌注。要么他们得到
城市