从PHP中的表中获取主题

时间:2013-11-29 11:07:23

标签: php mysql sql

好的所以我试图访问一个名为emg_quote的表我有引用ID所以我试图从与此ID相同的行获取列主题但由于某种原因我得到的是整个表中的第一行?任何人都可以弄清楚我做错了什么吗?这是我的编码:

$row['quote_id'] = quoteTitle($row['quote_id']);

function quoteTitle($quoteid){
    global $db;

    $sql = "SELECT subject FROM emg_quote WHERE ".$quoteid."";
    $res = $db->query($sql);
    $row = $db->fetch_row();

    $output = $row['subject'];

    return $output;
}

5 个答案:

答案 0 :(得分:2)

您是否使用自定义对象来包装本机API?

无论哪种方式对我来说都不合适。您似乎没有使用查询结果。

$result = $mysqli->query($query);
$row = $result->fetch_row();

答案 1 :(得分:2)

您的代码中几乎没有不良做法。

一个。你躺在$quoteid上给你正确的where语法。即:ID=123 这是一种非常不安全的方法,因为用户可以将其更改为Some-Important-Details='bla' 从此表或其他人中提取更多详细信息。

B中。从用户接收数据时,您应该始终转义字符,否则您很容易进行SQL注入。相信我你不想要它。

答案 2 :(得分:2)

你必须在哪里使用检查。 在$ quoteid变量

之前使用列名
$row['quote_id'] = quoteTitle($row['quote_id']);

function quoteTitle($quoteid){
global $db;

$sql = "SELECT subject FROM emg_quote WHERE quoteid=".$quoteid." LIMIT 1 ";
$res = $db->query($sql);
$row = $db->fetch_row();

$output = $row['subject'];

return $output;
}

请记住:当您使用主键搜索时,USE限制为1,并且您知道将只搜索1条记录。它减少了你的处理时间。

答案 3 :(得分:1)

您可能错过了where列。

$sql = "SELECT subject FROM emg_quote WHERE quote_id=".$quoteid."";
                                            ^^^^^^^^

我们也看不到您的Db课程的天气错误。

在任何情况下,您都不应将请求变量直接放入数据库查询中。

答案 4 :(得分:1)

$sql = "SELECT subject FROM emg_quote WHERE ID='".$quoteid."'";

您没有在条件

中写下您的数据库字段名称