Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON PHP数据返回null_Php_Json - Fatal编程技术网

JSON PHP数据返回null

JSON PHP数据返回null,php,json,Php,Json,我正在尝试使用AJAX获取PHP脚本,并将值作为JSON返回。由于某种原因,我的脚本失败了,我正试图找出问题所在。当我将数据库中的值输入地址栏时,如: www.someaddress/post.php?kinaseEntry=aValue 我得到一个JSON输出,如下所示: {"kinaseSKU":null,"url":null,"molecularWeight":null,"tracerSKU":null,"antiSKU1":"antiSKU1","antiSKU2":"antiSKU2

我正在尝试使用AJAX获取PHP脚本,并将值作为JSON返回。由于某种原因,我的脚本失败了,我正试图找出问题所在。当我将数据库中的值输入地址栏时,如:

www.someaddress/post.php?kinaseEntry=aValue
我得到一个JSON输出,如下所示:

{"kinaseSKU":null,"url":null,"molecularWeight":null,"tracerSKU":null,"antiSKU1":"antiSKU1","antiSKU2":"antiSKU2","bufferSKU":"bufferSKU","tracerConc":null,"assayConc":null}
我的PHP文件如下所示:

<?php

//Include connection to database
require_once 'connect.php';

$kinase = mysql_real_escape_string ($_POST["kinaseEntry"]);

mysql_query('SET CHARACTER SET utf8'); 

$findKinase = "SELECT * FROM kbaData where cleanSKU = '" .$kinase. "' ";

if ($result = mysql_query($findKinase)) {

    $row = mysql_fetch_array($result, MYSQL_ASSOC);

    $kinaseSKU = $row['cleanSKU'];
    $url = $row['url'];
    $molecularWeight = $row['molecularWeight'];
    $tracerSKU = $row['tracerSKU'];
    $antiSKU1 = $row['antiSKU1'];
    $antiSKU2 = $row['antiSKU2'];
    $bufferSKU = $row['bufferSKU'];
    $tracerConc = $row['tracerConc'];
    $assayConc = $row['assayConc'];


    /* JSON ROW */
    $json = array ("kinaseSKU" => $kinaseSKU, "url" => $url, "molecularWeight" => $molecularWeight, "tracerSKU" => $tracerSKU, "antiSKU1" => $antiSKU1, "antiSKU2" => $antiSKU2, "bufferSKU" => $bufferSKU, "tracerConc" => $tracerConc, "assayConc" => $assayConc );

} else  {

    /* CATCH ANY ERRORS */
    $json = array('error' => 'Mysql Query Error');
}

/* SEND AS JSON */
header("Content-Type: application/json", true);

/* RETURN JSON */
echo json_encode($json);

/* STOP SCRIPT */
exit;
?>

您的问题似乎是实际上没有从查询返回行。尝试:

$result = mysql_query($findKinase);
if ($result !== false && mysql_num_rows($result) > 0) {
    // your code
}

如果查询中有错误,
$result
在本例中为
false
。如果没有错误,则检查是否实际返回了行。如果返回的行数超过0行,尝试提取数据。

您的问题似乎是查询中实际上没有返回行。尝试:

$result = mysql_query($findKinase);
if ($result !== false && mysql_num_rows($result) > 0) {
    // your code
}

如果查询中有错误,
$result
在本例中为
false
。如果没有错误,则检查是否实际返回了行。如果返回的行数超过0行,尝试提取数据。

首先,我不确定
If(isset($\u POST['kinaseEntry'))
是否适用于您显示的内容。您显示的URL是一个get请求,因此如果您想要访问该变量,您必须使用
$\u get['kinaseEntry']
。如果您需要执行POST,请将表单中的method属性更改为
,这将为您提供POST变量。

首先,我不确定
If(isset($\u POST['kinaseEntry'))
是否适用于您显示的内容。您显示的URL是一个get请求,因此如果您想要访问该变量,您必须使用
$\u get['kinaseEntry']
。如果需要执行POST操作,请将表单中的method属性更改为
,这将为您提供POST变量。

即使返回0行,
mysql\u query
函数也会返回一个真值。它仅在出现数据库错误时返回false。所以我相信它执行一个查询,没有结果,所以JSON中有
null
值。尝试使用mysql\u num\u行:

$findKinase = "SELECT * FROM kbaData where cleanSKU = '" .$kinase. "' ";

if ($result = mysql_query($findKinase)) {
      $json = array('error' => 'Mysql Query Error');
}else{
    $num_rows = mysql_num_rows($result);
    if($num_rows > 0){
         // Do sth with the results
    }else{
         $json = array('error' => 'No results');
    }
}

mysql\u query
函数返回一个真值,即使返回0行。它仅在出现数据库错误时返回false。所以我相信它执行一个查询,没有结果,所以JSON中有
null
值。尝试使用mysql\u num\u行:

$findKinase = "SELECT * FROM kbaData where cleanSKU = '" .$kinase. "' ";

if ($result = mysql_query($findKinase)) {
      $json = array('error' => 'Mysql Query Error');
}else{
    $num_rows = mysql_num_rows($result);
    if($num_rows > 0){
         // Do sth with the results
    }else{
         $json = array('error' => 'No results');
    }
}

是的,您将返回一个行数组,因此这并不像您期望的那样有效。这应该可以解决问题,但我认为这不是最好的方法(但我认为它无论如何都应该有效)


是的,您将返回一个行数组,因此这并不像您期望的那样有效。这应该可以解决问题,但我认为这不是最好的方法(但我认为它无论如何都应该有效)



您是否
var\u dump($row)
以确保它不是全部为空?否则,您的代码看起来是正确的。@sberry问题的标题是失败的-JSON都是空值…$findKinase只返回一行,还是可能返回多行?看起来您缺少了一个循环。当我使用var_dump($row)时,我得到bool(false)@methemer,我只想返回单个入口的数据。您是否
var_dump($row)
以确保它不都是空的?否则,您的代码看起来是正确的。@sberry问题的标题是失败的-JSON都是空值…$findKinase只返回一行,还是可能返回多行?看起来您缺少了一个循环。当我使用var_dump($row)时,我得到bool(false)@methemer,我只想返回单个条目的数据。在测试您是否正确时,我删除了isset功能。在将代码与这里提供的一些示例混合后,我最后更改的是要获取的POST,它现在返回它应该返回的值。感谢所有花时间回答我问题的人,我在测试您是否正确时删除了isset功能。在将代码与这里提供的一些示例混合后,我最后更改的是要获取的POST,它现在返回它应该返回的值。感谢所有花时间回答我问题的人尝试了此修复,不幸的是我得到了>{“错误”:“Mysql查询错误”}backSo您在查询中有错误。您可以使用显示错误。很抱歉,该消息是针对另一个成员的,我将尝试您的解决方案。我刚刚尝试了您的示例,但不幸的是,我得到了一个没有结果的空白屏幕。我尝试了此修复,不幸的是,我得到了>{“错误”:“Mysql查询错误”}backSo您在查询中有错误。您可以使用显示错误。很抱歉,该消息是针对其他成员的,我将尝试您的解决方案。我刚刚尝试了您的示例,但不幸的是,我得到的是一个没有显示错误的空白屏幕results@JPK我不认为这是不幸的,我认为这意味着问题不是你想象的那样。您现在需要调试实际查询。=)@我不认为这是不幸的,我认为这意味着问题并不是你想象的那样。您现在需要调试实际查询。=)