通过在数据库表中搜索,从同一列中的不同行检索文本

时间:2013-11-11 20:29:35

标签: php mysql database

我想在数据库表中搜索特定单词,并希望从同一行中的其他列检索文本,并且可能存在多个可能存在该单词的行,所以我希望所有那些行都在那里这个词是。 我正在使用此代码

$found = 'world';
$sql = "SELECT file_id FROM hello WHERE $field = '$found'";
$result = mysql_query( $sql);
$row = mysql_fetch_array($result);
while($row)
{
    echo $row['file_id'];         
} 

所以我的问题在于数据库表中我只有5行,代码后只能打印2个可能的file_id,但这个while循环变为无限。

提前致谢

2 个答案:

答案 0 :(得分:1)

快速解决方法是:

$found = 'world';
$sql = "SELECT file_id FROM hello WHERE field = '$found'";
$result = mysql_query( $sql);
while($row = mysql_fetch_array($result)) {
    echo $row['file_id'];         
} 

但是还有许多其他事情需要纠正:

  • 使用mysqli扩展名,不推荐使用mysql扩展名

  • 您应该使用预准备语句来阻止sql注入

  • 您必须添加错误检查和处理

  • ...

答案 1 :(得分:0)

如果您正在启动项目,请使用PDO

$db new PDO('mysql:host=localhost dbname=foo', 'user', 'password');

$sql = 'SELECT file_id FROM hello WHERE field = ? ';

$stmt = $db-prepare($sql);
$stmt->bindValue(1, $word);
$stmt->execute();

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach($result as $item){
   echo $item['key'];
}