从$ _POST创建mysql INSERT的字符串

时间:2015-10-25 19:15:14

标签: javascript php mysql

我使用javascript ajax将值发布到PHP。 在这种情况下,它是{x: 5, y, 5}

的对象

这将创建一个正确的SQL查询,从而导致INSERT。

if (isset($_POST["item"])) {
    $var = $_POST["item"];
    $x = $var["x"];
    $y  = $var["y"];
    $sql = "INSERT INTO hex (id, x, y) VALUES (NULL, $x, $y)";
}
然而,这根本不起作用。为什么以及如何修复? - 谢谢

if (isset($_POST["item"])) {
    $var = $_POST["item"];

    $sql = "INSERT INTO hex (id, x, y) VALUES (NULL, $var["x"], $var["y"])";
}

也无效:

if (isset($_POST["item"])) {
    $var = $_POST["item"];

    $sql = "INSERT INTO hex (id, x, y) VALUES (NULL, '$var["x"]', '$var["y"]')";
}

2 个答案:

答案 0 :(得分:0)

问题是你使用“创建一个字符串,然后用它来定义你的数组变量。你不能把它组合起来。但是你可以这样做来组合字符串:

$sql = "INSERT INTO hex (id, x, y) VALUES (NULL, '" . $var["x"] . "', '" . $var["y"] . "')";

注意:这不是一个安全的查询,因为MySQL注入非常简单。请尝试使用PDO和参数。看到这个答案:

  

prepared parameterized query with PDO

答案 1 :(得分:0)

也许你的问题是由双引号引起的。

试试这个:

$sql = "INSERT INTO hex (id, x, y) VALUES (NULL, $var['x'], $var['y'])";

甚至这个:

$sql = 'INSERT INTO hex (id, x, y) VALUES (NULL, '.$x.', '.$y.')";