【问题标题】:retrieve text from different rows from same column by searching in database table通过在数据库表中搜索从同一列的不同行中检索文本
【发布时间】:2013-11-12 04:44:13
【问题描述】:

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

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

提前致谢

【问题讨论】:

  • 你需要把mysql_fetch_array放到while循环中:while($row = mysql_fetch_array($result))
  • 您是否尝试过将您的 SQL 更改为 SELECT file_id FROM hello WHERE $field LIKE '%$found%'
  • $row aways true 因为不为空
  • 感谢@andrewsi 成功了

标签: php mysql database


【解决方案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 注入

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

  • ...

【讨论】:

  • 我已经完成了错误检查和所有操作。只是我知道问题出在哪里,所以我把那部分放在这里。还是谢谢
  • 查看 xdebug 扩展并配置您的 IDE 以使用它。它有助于调试此类问题,因为您可以看到发生了什么。
【解决方案2】:

如果您要开始一个项目,请使用 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'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多