$ _POST不使用标记表单从输入文本接收数据

时间:2013-12-17 08:16:02

标签: php mysql ajax json null

在我的php代码中将输入文本中的值发送到我的变量( $ name )时遇到问题:

我将数据发送到edit.php

<form action="edit.php" method="post">
    <input type="text" name="edit_text"/>
    <input id="send" type="submit"/>
</form>

我的edit.php文件:

<?php
header("Content-Type: application/json");

$name = isset($_POST["edit_text"])?$_POST["edit_text"]:"";
$con=mysqli_connect("localhost","root","root","example");
$result = mysqli_query($con,"SELECT * FROM items WHERE name = '".$name."'");
$row = mysqli_fetch_array($result, MYSQL_ASSOC);

echo json_encode($row);
mysqli_close($con);
?>

我在我的表中寻找记录,然后我返回一个带有查询值的json对象。但它只能起作用如果我将我的项目名称直接放在字符串中:

$result = mysqli_query($con,"SELECT * FROM items WHERE name = 'ITEM'");

我使用getjson和console.log()来查看会发生什么,并返回json对象,其中包含来自my table的正确值。

但是,如果我使用相同的查询,但我的变量 $ name 已经指定了与查询连接的项目的相同名称,则无效。

$result = mysqli_query($con,"SELECT * FROM items WHERE name = '".$name."'");

它始终返回空值,就好像没有从我的输入文本中为我的 $ name 变量分配任何内容。

1 个答案:

答案 0 :(得分:0)

我会将您的代码更改为以下内容:

if (isset($_POST['edit_text'])) {

    $name = $_POST['edit_text'];
    $con=mysqli_connect("localhost","root","root","example");

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $result = mysqli_query($con,"SELECT * FROM items WHERE name = '$name'");

    $data = array();
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
                                       // Noitcie ^ the 'I' here
        $data[] = $row;
    }
    mysqli_close($con);
    echo json_encode($data);
}

另外,如果你使用双引号,则不需要连接变量。

希望这有帮助!