Mysql查询完成但由于在查询结束时出现的null而返回为错误

时间:2017-10-23 18:59:09

标签: php mysql database slim

好的,所以我们在组织的api中使用了一个瘦的php应用程序的问题。当我们向苗条应用程序发布更新查询时,数据会通过。

问题在于即使数据传递到api并且在所有字段上执行操作。它作为错误返回。这是因为当我们运行函数时,它在SQL查询结束时对应的sql查询右击这个格式为WHERE id = $ idnull的函数调用中的变量旁边的where语句。 $ id是实际值。该功能的结构与我们成功的功能场地方法相同。有没有人有任何想法?

在我的智慧结束时尝试解决此问题,以便函数写入我们的数据库以便组织正常运行。

function updateOrg($id) {
error_log('addOrg\n', 3, 'php.log');
$request = Slim::getInstance()->request();
$body = $request->getBody();
//var_dump($body);
$org = json_decode($body);

// Handle Checkboxes
if(isset($_REQUEST['recAddEnable'])){ $rAdde = 1; } else $rAdde = 0;
if(isset($_REQUEST['recTelEnable'])){ $rTele = 1; } else $rTele = 0;
if(isset($_REQUEST['recUrlEnable'])){ $rUrle = 1; } else $rUrle = 0;

$sql = "UPDATE usg_usg_orgs 
        SET 
            oname='$_REQUEST[oname]', 
            oemail='$_REQUEST[oemail]', 
            odesc='$_REQUEST[odesc]', 
            ourl='$_REQUEST[ourl]', 
            oadd1='$_REQUEST[oadd1]', 
            oadd2='$_REQUEST[oadd2]', 
            ozip='$_REQUEST[ozip]', 
            ocity ='$_REQUEST[ocity]',
            ostate ='$_REQUEST[ostate]', 
            otel ='$_REQUEST[otel]',
            ofax ='$_REQUEST[ofax]', 
            recTel ='$_REQUEST[recTel]', 
            recTelEnable= $rTele, 
            recAdd1='$_REQUEST[recAdd1]',
            recAdd2='$_REQUEST[recAdd2]',
            recAddEnable= $rAdde,
            recCity='$_REQUEST[recCity]', 
            recCounty='$_REQUEST[recCounty]', 
            recUrl='$_REQUEST[recUrl]', 
            recUrlEnable=$rUrle, 
            recState='$_REQUEST[recState]',
            recZip='$_REQUEST[recZip]',
            recPubNote='$_REQUEST[recPubNote]',
            recPrivNote='$_REQUEST[recPrivNote]', 
            priContact='$_REQUEST[priContact]', 
            priTitle='$_REQUEST[priTitle]', 
            priPhone='$_REQUEST[priPhone]',
            priCell='$_REQUEST[priCell]',
            priEmail='$_REQUEST[priEmail]',
            secContact='$_REQUEST[secContact]',
            secTitle='$_REQUEST[secTitle]', 
            secPhone='$_REQUEST[secPhone]',
            secCell='$_REQUEST[secCell]',
            secEmail='$_REQUEST[secEmail]',
            addContact='$_REQUEST[addContact]', 
            addTitle='$_REQUEST[addTitle]',
            addPhone='$_REQUEST[addPhone]',
            addCell='$_REQUEST[addCell]',
            addEmail='$_REQUEST[addEmail]',
            invContact='$_REQUEST[invContact]',
            invTitle='$_REQUEST[invTitle]', 
            invPhone='$_REQUEST[invPhone]',
            invCell='$_REQUEST[invCell]',
            invEmail='$_REQUEST[invEmail]', 
            recModified = UNIX_TIMESTAMP() 
        WHERE oid= $id";
        echo $sql;
try {
    $db = getConnection();
    $stmt = $db->prepare($sql);  
    $stmt->execute();
    $db = null;
    echo json_encode($org); 
} catch(PDOException $e) {

    echo '{"error":{"text":'. $e->getMessage() .'}}';

}

}

这是我们用来写orgs的函数。

下面是我们用来写api来编写orgs的函数。

jQuery.ajax({
        type: "post",
        url: "//usasportgroup.com/api3/orgs/update/"+oid,
        data: {     
        oname:jQuery('#onameMF').val(),
        oadd1:jQuery('#oadd1MF').val(),
        oadd2:jQuery('#oadd2MF').val(),
        otel:jQuery('#otelMF').val(),
        ocity:jQuery('#ocityMF').val(),
        ostate:jQuery('#ostateMF').val(),
        ozip:jQuery('#ozipMF').val(),
        ourl:jQuery('#ourlMF').val(),
        oemail:jQuery('#oemailMF').val(),
        recAdd1:jQuery('#recAdd1MF').val(),
        recAdd2:jQuery('#recAdd2MF').val(),
        recAddEnable:jQuery('#recAddEnableMF').val(),
        recTel:jQuery('#recTelMF').val(),
        recTelEnable:jQuery('#recTelEnableMF').val(),
        recZip:jQuery('#recZipMF').val(),
        recCity:jQuery('#recCityMF').val(),
        recState:jQuery('#recStateMF').val(),
        recUrl:jQuery('#recUrlMF').val(),
        recUrlEnable:jQuery('#recUrlEnableMF').val(),
        recPubNote:jQuery('#recPubNoteMF').val(),
        priContact:jQuery('#priContactMF').val(),
        priTitle:jQuery('#priTitleMF').val(),
        priPhone:jQuery('#priPhoneMF').val(),
        priEmail:jQuery('#priEmailMF').val(),
        priCell:jQuery('#priCellMF').val(),
        secContact:jQuery('#secContactMF').val(),
        secTitle:jQuery('#secTitleMF').val(),
        secPhone:jQuery('#secPhoneMF').val(),
        secEmail:jQuery('#secEmailMF').val(),
        secCell:jQuery('#secCellMF').val(),
        invContact:jQuery('#invContactMF').val(),
        invTitle:jQuery('#invTitleMF').val(),
        invPhone:jQuery('#invPhoneMF').val(),
        invEmail:jQuery('#invEmailMF').val(),
        invCell:jQuery('#invCellMF').val(),
        addContact:jQuery('#addContactMF').val(),
        addTitle:jQuery('#addTitleMF').val(),
        addPhone:jQuery('#addPhoneMF').val(),
        addEmail:jQuery('#addEmailMF').val(),
        addCell:jQuery('#addCellMF').val()},
        dataType: "json",
        success: function(data) {
        jQuery('#orgModal').modal('hide');
        },
        error: function(data) {     
        console.log(data);
        }
    });

这就是我们获取ID的方式:

$app->post('/update/:id', 'updateOrg');

如下面的评论链中所述 这是我们从错误函数WHERE oid = 1216null

返回的示例

有人有什么想法吗?任何人?自从我们第一次构建系统以来,这一直困扰着我们。

我认为它可能是服务器端,因为ID经过并被使用但在语句的末尾有一个没有附加到该号码的空值。我查过了。 在你提出约束参数之前是一个长期目标。 经过进一步检查,它似乎返回了Okay的statusText。状态为200。

1 个答案:

答案 0 :(得分:0)

好的,经过大量测试和研究的问题比我想象的要简单得多。事实证明,由于某些原因,除了答案之外,我们仍然积极地回应SQL。导致它以http响应200返回。这就是整个发臭时间的问题。我注释掉了echo $ sql命令,它现在的工作方式完全像它应该是全面的。我非常抱歉在回顾过程中浪费了每个人的时间,这是一个非常明显的解决方案。