1

我想在数据库表中搜索特定单词,并想从同一行的其他列中检索文本,并且可能存在多个该单词的行,因此我想要该单词所在的所有行。我正在使用此代码

$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 循环进入了无限。

提前致谢

4

2 回答 2

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 注入

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

  • ...

于 2013-11-11T20:33:33.893 回答
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'];
}
于 2013-11-11T20:37:09.617 回答