Hi,
$show_result = 0;
if (isset($show_result) and $show_result != 'create_db')
ergibt "false" - also sind nicht beide Bedingungen wahr
wirkt so, als würde dort statt and OR stehen *grübel*
nein. Bei einem Vergleich mittels == bzw. != ignoriert PHP die Typen und führt eine interne Umwandlung des Strings in, in diesem Fall, einen Integer durch, siehe http://de3.php.net/manual/de/language.types.string.php#language.types.string.conversion.
Was dabei passiert, siehst du, wenn du die Umwandlung mal selbst durchführst:
<?php
echo intval('create_db'); // 0
?>
Also ergibt ($show_result != 'create_db') false (denn es gilt nach der internen Umwandlung des Strings (0 == 'create_db'), und somit wird der ganze Ausdruck false. Wie du schon selbst festgestellt hast, ist bei Vergleichen, in denen es auf die Typen ankommt, === bzw. !== zu verwenden.
Gruß,
Andreas.