我有一个小马名称列,其中饲养员的前缀包含在小马的名字中(例如,Ashbrook Boy,其中Ashbrook是Breeder的前缀,而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);
答案 0 :(得分:0)
你的错误来自于$ 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)){