我对 SQL 还很陌生(现在正在阅读)。我想知道在 PHP 中是否有比以下更好的方法来获取 MySQL 数据项:
$sql = "SELECT `topic_id` from `topics` WHERE `user_id` = ".$userId." AND `topic` = ".$topic.";";
$topicRow = mysql_query($sql);
$row = mysql_fetch_array($topicRow);
$topicId = $row['topic_id'];
我的意思是,创建了 4 个变量来获取 1 个项目。我做错了什么吗?
谢谢
最佳答案
变量的数量不是真正的问题,如果需要,您可以将 sql 字符串放入查询中,但您并没有真正赢得任何可衡量的东西。请不要在那里寻求效率。虽然@genesis 和@patapizza 的答案据我所知是正确的,但它们并不能以任何方式帮助您改进代码,而只会使其可读性降低。
您应该研究参数化查询(看看使用 PDO ):您应该拆分内容 ($userId
) 和 SQL 命令。
手册中的示例:
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
您不必转义放入查询中的各种内容,因此可以避免注入(inject)。
(哦,巧合的是,仅使用 2 个变量.. jeeeej :) )
关于php - 有没有更好的方法从 MySQL 数据库获取项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315022/