php Curl无法在if语句中正确读取响应,回复正常

时间:2017-10-04 17:36:40

标签: php mysql curl

你好我正在做我的单身工作,我们正在使用curl和php,我已经制作了一个脚本。脚本从html表单中检索一个id,然后使用curl将它传递给php脚本来更新数据库,这一切都运行正常,但在我的curl脚本中,我从php页面中读取了回声

  

更新数据库后,我的if语句无法读取OK,我做错了什么?正如我所说的代码工作正常它只是在读取响应后没有在if语句中显示正确的消息,如果我尝试它,curl脚本显示的是什么,再次数据库更新等等,只是没有阅读然而,正如您在代码中看到的那样响应正确地回应测试它的响应并且它显示OK,在OK之前有一个空格,所以我尝试了#34;行"并且'好的'再次有一个空格,但都无法与响应相匹配。

  

错误

     

测试回答=确定

代码。

卷曲代码

<?php
$id = $_POST["id"];

$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, "http://southamptonstudentrooms.com/Wad/downloadwebservice3.php");
$dataToPost = array ("id" => $id);
curl_setopt($connection,CURLOPT_RETURNTRANSFER,1);
curl_setopt($connection,CURLOPT_POSTFIELDS,$dataToPost);
$response = curl_exec($connection);
// display any errors
if(curl_errno($connection)){
    echo 'Curl error: ' . curl_error($ch);
}
curl_close($connection);
if ($response == " OK") {
    echo "updated";
    }
else if ($response == " ERROR") {
    echo "updated failed";
    }
else {
    echo "error";
    }
echo "<br><br>test response =" . $response; // displays " OK" 
var_dump($response); // displays: string(4) " OK"
?>

它访问的PhP脚本 - 用于连接的用户信息已更改为安全性

<?php
$servername = "localhost";
$username = "south609_edwin";
$password = "Zx10r2006";
$dbname = "south609_test_database";
$ID = $_POST["id"];
$status;

    // 11: Chris Palmer, username ChrisPalmer, Password tree987, Balance 2.00
    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

    $sql = "SELECT * FROM ht_users WHERE username='ChrisPalmer'";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        // output data of each row
        while($row = mysqli_fetch_assoc($result)) {
            if($row["balance"] >= 0.79)
            {
                mysqli_close($conn);
                try {
                    //WAI
                    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
                    // set the PDO error mode to exception
                    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                    $sql = "UPDATE wadsongs SET downloads=downloads + 1 WHERE songid='$ID'";

                    // Prepare statement
                    $stmt = $conn->prepare($sql);

                    // execute the query
                    $stmt->execute();

                    $status = "OK";
                    // echo a message to say the UPDATE succeeded
                    // echo $stmt->rowCount() . " records UPDATED successfully";
                    }
                    catch(PDOException $e)
                    {
                        echo $sql . "<br>" . $e->getMessage();
                    }
                $conn = null;
            }
            else{
                $status = "ERROR";
            }
        }
    }
    else {
        echo "0 results";
        mysqli_close($conn);
    }
echo $status;
?>

2 个答案:

答案 0 :(得分:1)

你遇到的问题是你得到的回答是否有一个空格,这与#34; OK&#34;因此你可以借助PHP中的trim()函数修剪空白区域

现在您的代码将成为

if(trim($response) == "OK"){
//Your success code
}

答案 1 :(得分:1)

就这么简单,谢谢Channaveer Hakari。即使我试图阅读空间和字符串它仍然奇怪地失败,但你的修剪想法完美地工作,它现在按预期工作。如果有人知道为什么php添加空间就像C一样,它会在char流中传递它时添加一个空指针/ 0。