好的所以我试图访问一个名为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;
}
答案 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."'";
您没有在条件
中写下您的数据库字段名称