我已经实现了我的数据库,然后我通过PHP从数据库中检索数据。
在我的代码中,我应该按名称过滤数据,如果名称存在,我想打印数据。虽然所需项目在表格中,但不显示任何内容。我无法理解错误的位置。只有数据库中的位置信息,我没有将用户的位置保存在我的数据库中。
我的代码是:
<?php
$username="myusername";
$password="mypasswd";
$database="mydatabase";
$host="mysqlmyhost.com";
mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// check for post data
if (isset($_GET["locationName"])) {
$locationName = $_GET['locationName'];
// get a product from products table
$result = mysql_query("SELECT *FROM Location WHERE locationName = $locationName");
if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$product = array();
$product["locationName"] = $row["locationName"];
$product["locationInfo"] = $row["locationInfo"];
$product["locationLatitude"] = $row["locationLatitude"];
$product["locationLongitude"] = $row["locationLongitude"];
$product["locationPic"] = $row["locationPic"];
$product["city"] = $row["city"];
// success
$response["success"] = 1;
// user node
$response["Location"] = array();
array_push($response["Location"], $product);
// echoing JSON response
echo json_encode($response);
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No product found";
// echo no users JSON
echo json_encode($response);
}
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No product found";
// echo no users JSON
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
?>
编辑:
现在,我想向用户显示最近的位置。我搜索并更改了代码。我在$ userLatitude = $ _ GET ['userLatitude']开头就有错误; 。它说这里有一个意想不到的t_string错误。我无法理解错误是什么。你能帮忙吗?
if (isset($_GET["userLatitude"]) && isset($_GET["userLongitude"])) {
$userLatitude=$_GET['userLatitude'];
$userLongitude=$_GET['userLongitude'];
$result = mysql_query("SELECT locationName, ( 6371 * acos( cos( radians( $userLatitude) ) * cos( radians( locationLatitude ) ) * cos( radians( locationLongitude ) - radians( $userLatitude) ) + sin( radians($userLongitude) ) * sin( radians( locationLatitude) ) ) ) AS distance
FROM Location HAVING distance < 2 ORDER BY distance LIMIT 0 ,20") or die(mysql_error());
echo $result;
// check for empty result
if (mysql_num_rows($result) > 0) {
// looping through all results
// products node
$response["Location"] = array();
while ($row = mysql_fetch_array($result)) {
// temp user array
$product = array();
$product["locationName"] = $row["locationName"];
$product["locationInfo"] = $row["locationInfo"];
$product["locationLatitude"] = $row["locationLatitude"];
$product["locationLongitude"] = $row["locationLongitude"];
$product["locationPic"] = $row["locationPic"];
$product["city"] = $row["city"];
// push single product into final response array
array_push($response["Location"], $product);
}
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response);
} else {
// no products found
$response["success"] = 0;
$response["message"] = "No products found";
// echo no users JSON
echo json_encode($response);
}
mysql_close();
答案 0 :(得分:1)
一些想法:
可能的代码:
// get a product from products table
$result = mysql_query("SELECT *FROM Location WHERE locationName = '".$locationName."'");
数据库中的数据示例:那是我/在说什么/'abuot /“fella /'/”!
可能的代码:
$locationName = mysql_real_escape_String($_GET['locationName']);
and
$product["locationName"] = stripslashes($row["locationName"]);
显示mysql查询的内联错误: (这将在错误时停止页面并显示MySQL返回的消息)
$result = mysql_query("SELECT *FROM Location WHERE locationName = $locationName") or die(mysql_error());
PHP中的常规错误报告: (这个有点冗长,也会显示警告)
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
详细输出 有时我会在页面中添加详细消息,这样我就可以验证我提交的查询,并在测试脚本后删除或注释掉它们。
$locationQuery= mysql_query("SELECT *FROM Location WHERE locationName = '".$locationName."'");
echo "Current Query: ".$locationQuery."<br>\n";
$result = mysql_query($locationQuery) or die(mysql_error());
答案 1 :(得分:0)
1
SELECT * FROM
在*
之后忘记了空间2
WHERE locationName = $ locationName“
你应该把变量用引号括起来
WHERE locationName = \"$locationName\""
3
删除此条件if (!empty($result)) {
,因为$ result是资源而且不是空的
4
您使用 $ row 变量,将行更改为$row = mysql_fetch_array($result);
始终写或死(mysql_error())
mysql_query('....')或die(mysql_error());
答案 2 :(得分:0)
在示例代码中,您将返回的数据存储在$ result变量中,但尝试从$ row变量访问它
$result = mysql_fetch_array($result);
$product = array();
$product["locationName"] = $row["locationName"];
尝试
$row = mysql_fetch_array($result);
$product = array();
$product["locationName"] = $row["locationName"];