0

我正在尝试使用 PHP 向数据库添加一些值我从 Android 应用程序发送一些参数,它们也以正确的方式到达。我用 echo 检查了它并打印了我发送的所有参数。

id (PRIMARY_KEY, AUTO_INCREMENT)

deviceID (TEXT)

name (TEXT)

latitude (TEXT)

longitude (TEXT)

这就是结构和数据库的名称是位置

这是我的查询,但它不起作用。

$deviceID = $_POST['deviceID'];
    $name = $_POST['name'];
    $latitude = $_POST['latitude'];
    $longitude = $_POST['longitude'];

$result = mysql_query("INSERT INTO position(deviceID, name, latitude, longitude) VALUES('$deviceID', '$name', '$latitude', '$longitude')");
4

2 回答 2

2

http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_position

Position是 MySQL 中的一个函数名:您应该使用反引号 (`) 对其进行转义,并且您需要position在括号和括号之间添加一个空格。

$result = mysql_query("INSERT INTO `position` (deviceID, name, latitude, longitude) VALUES('$deviceID', '$name', '$latitude', '$longitude')");
于 2012-10-25T13:11:45.397 回答
0

听着,您需要停止使用已弃用的mysql_*功能。它们会让你很头疼。我建议你设置 mysql 来使用PDO. 这是一个例子。

首先连接到它并让它抛出异常供您自己处理。

try {
    $pdo = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

现在运行您的更新。

try { 
  $stmt = $pdo->prepare('INSERT INTO position VALUES(:deviceId, :name, :latitude, :longitude)');
  $stmt->execute(array(
    ':deviceId' => $deviceID,
    ':name' => $name,
    ':latitude' => $latitude,
    ':longitude' => $longitude 
  ));

  // Affected Rows?
  echo $stmt->rowCount(); // 1

} catch(PDOException $e) {

  echo 'Error: ' . $e->getMessage();
}

// 根据您对 json_encode 的问题

execute()在您以相同的方式(但使用 a )调用语句之后,您SELECT只需要这样做。

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); // This will be an array
$json_results = json_encode($results);

如果您想将其作为对象(我更喜欢使用),请稍后再进行

$results = $stmt->fetchAll(PDO::FETCH_OBJ);

此外,如果您想获得单个结果,请使用fetch()

$result = $stmt->fetch(PDO::FETCH_ASSOC);
于 2012-10-25T13:15:04.527 回答