SQL INSERT INTO无效

时间:2012-10-25 13:00:51

标签: php mysql insert

我正在尝试使用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')");

2 个答案:

答案 0 :(得分: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')");

答案 1 :(得分: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()语句后(但使用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);