放置在另一个查询中的MySQL PHP查询';s,而循环失败


MySQL PHP Query placed within another query's while loop failing

我有一列小马的名字,其中饲养员的前缀包含在小马的名字中(例如Ashbrook Boy,其中Ashbrook是饲养员前缀,Boy是小马的名字)。我还有一张表,上面列出了所有使用的前缀。我想循环浏览这个列表,对于每个记录,搜索我的小马,并依次获取那些名字以每个前缀开头的小马。当它们被提取时,我想从它们的名称中删除所述前缀,并将其弹出到它们自己表上的一列中。

最后,我想要两列,而不是一列同时包含前缀和名称:一列表示前缀,一列表示名称。

我以为下面的代码可以帮我做这件事,但它不起作用。我收到$res的"不是有效资源"错误。你能给我的任何帮助都将不胜感激——我真的不想手工做这件事!:P

我使用的是MySQL数据库中的PHP脚本,我可以通过PHPMyAdmin访问它。

include '../conn.php';
$q=mysql_query("SELECT DISTINCT Pre FROM prefixes");
while($r=mysql_fetch_array($q)) {
    $pre=$r['Pre'];
    $sql="SELECT ID, Name FROM profiles WHERE (Name REGEXP '^$pre') ORDER BY ID ASC";
    mysql_query($sql);
    echo $sql;
    while($res=mysql_fetch_array($sql)){
        $name=$res['Name'];
        $name=trim(str_replace("$pre","", $name));
        $id=$res['ID'];
        mysql_query("UPDATE profiles SET Prefix = '$pre', Name = '$name' WHERE ID = '$id' ");
    }
}
mysql_close($con);

您的错误是因为$sql是查询字符串,而不是查询的mysql结果

$sql="SELECT ID, Name FROM profiles WHERE (Name REGEXP '^$pre') ORDER BY ID ASC";
mysql_query($sql);
echo $sql;
while($res=mysql_fetch_array($sql)){

有了这个,它看起来会更好:

$sql="SELECT ID, Name FROM profiles WHERE (Name REGEXP '^$pre') ORDER BY ID ASC";
$result = mysql_query($sql);
while($res=mysql_fetch_array($result)){