Reputation: 232
This code goes to "Else" and I get "Column 'server' in field list is ambiguous"
$otoon = mysql_real_escape_string($_POST['otoon']);
$oserver = mysql_real_escape_string($_POST['oserver']);
$server = mysql_real_escape_string($_POST['server']);
$sql="UPDATE regusers_test
INNER JOIN alt_toon_test ON (alt_toon_test.toonname = regusers_test.toonname)
SET server='$server'
WHERE username='$user' AND server='$oserver' AND toonname='$otoon'";
if (!empty($server)) {
if (mysql_query($sql,$con)) {
echo "Server updated to: " . $server;
} else {
echo "<h1>Error</h1>";
}
mysql_close($con);
I even tried changing $sql to
$gql="UPDATE regusers_test, alt_toon_test SET server='$server' WHERE username='$user' AND server='$oserver' AND toonname='$otoon'";
But i still get the same error. I'm banging my head against the wall here. I know what causes the error. I have 2 fields with the same name. I just don't know how to get past this.
Upvotes: 0
Views: 80
Reputation: 2156
You have to specify the table names in your SET and WHERE clause. That is, something like this:
$sql="UPDATE regusers_test INNER JOIN alt_toon_test ON (alt_toon_test.toonname = regusers_test.toonname) SET regusers_test.server='$server' WHERE regusers_test.username='$user' AND regusers_test.server='$oserver' AND regusers_test.toonname='$otoon'";
Would be even shorter query if you used aliases:
$sql="UPDATE regusers_test a INNER JOIN alt_toon_test b ON (b.toonname = a.toonname) SET a.server='$server' WHERE a.username='$user' AND a.server='$oserver' AND a.toonname='$otoon'";
You should also consider switching to mysqli or PDO extensions since mysql_query() is deprecated and will be removed in future updates of PHP versions.
Upvotes: 1