在php中编写SQL查询

时间:2018-01-10 12:07:48

标签: php mysql

以下sql查询在phpAdmin中完美运行。

SELECT response_text FROM statement_responses WHERE response_code = "s1_r1"

如果没有response_code值周围的语音标记,它就无法工作。

我试图在php中使用response_text的值。

for ($x = 1; $x <= 9; $x++) {   
    $user_response = ${"statement_" . $x . "_response"};
    $sql = "SELECT response_text FROM statement_responses WHERE response_code = \"$user_response\"";
    $result = mysqli_query($sql);
    $value = mysqli_fetch_object($result);
    echo $user_response . "<br>";
    echo $sql . "<br>";
    echo $result . "<br>";
    echo $value . "<br>";
}

回声让我可以看到每个变量包含的内容。

我得到以下内容:

s1_r3 (the value of $user_response)

SELECT response_text FROM statement_responses WHERE response_code = "s1_r3" (the value of $sql - which is identical to the phpAdmin query that works.)

$result$value没有回显值。

我做错了什么,拜托?为什么我没有从数据库中获取值到我的PHP代码中?

3 个答案:

答案 0 :(得分:3)

mysqli_query的第一个参数应该是使用mysqli_connect创建的数据库连接。类似地,mysqli_fetch_object的第一个参数应该是mysqli_query返回的结果集标识符。

最好从您调用的函数中检查返回值。

答案 1 :(得分:0)

首先,感谢您的所有回复。以下代码有效 - 即它返回&#39; response_text&#39;中包含的值。所选行的列由&#39; response_code&#39;标识用作$ response_text的值。

myProgram

答案 2 :(得分:-2)

你可以这样写

for ($x = 1; $x <= 9; $x++) {   
    $user_response = ${"statement_" . $x . "_response"};
    $sql = 'SELECT response_text FROM statement_responses WHERE response_code = "'.$user_response.'"';
    $result = mysqli_query($sql);
    $value = mysqli_fetch_object($result);
    echo $user_response . "<br>";
    echo $sql . "<br>";
    echo $result . "<br>";
    echo $value . "<br>";
}