0

問題があります。OPTIONSがmySQL DBから動的に入力される動的SELECTタグを作成する必要があります。私はこのコードを持っていますが、うまくいきません。だから、あなたがそれを他の方法で修正する方法やアイデアを持っているなら、私は非常に感謝します:)どうもありがとう!

<SELECT>
<?php
 $con = mysql_connect("localhost", "root", "123456");
mysql_select_db("aplikace",$con);
$result = ("SELECT * kod FROM protokoly".
"ORDER BY kod");
$rs = mysql_query($result);
$nr = mysql_num_rows($rs);
for ($i=0; $i<$nr; $i++) {
    $r = mysql_fetch_array($rs);
    echo "<OPTION VALUE=\"".$r["kod"]."\">".$r["kod"]."</OPTION>";
}
?>
</SELECT>
4

2 に答える 2

2

@Michael Berkowskiがコメントで示唆したように、現在との間protokolyにはスペースがありませんORDER BY。これによりMySQLエラーが発生しますが、トラブルシューティングを困難にするエラーは表示されません。

次のように、エラーが発生した場合にエラーを出力するようにコードを変更できます。

$rs = mysql_query($result) or die('Error during query: ' . mysql_error());

mysql_query()失敗した場合、をdie()呼び出すと、mysql_error()最新のMySQLエラーの内容が出力され、問題を特定するのに役立ちます。

編集:

die()私があなたのコードを次のように編集した使用法を説明するために:

<?php
// Place at top of file
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>

<SELECT>
<?php
$con = mysql_connect("localhost", "root", "123456") or die('Connection failed: ' . mysql_error());
mysql_select_db("aplikace", $con) or die('Cannot select database: ' . mysql_error());
$result = ("SELECT * kod FROM protokoly ORDER BY kod");
$rs = mysql_query($result) or die('Query failed: ' . mysql_error());
$nr = mysql_num_rows($rs) or die('Failed to get num_rows: ' . mysql_error());
for ($i = 0; $i < $nr; $i++)
{
    $r = mysql_fetch_array($rs);
    echo "<OPTION VALUE=\"{$r['kod']}\">{$r['kod']}</OPTION>";
}
?>
</SELECT>

MySQLエラーが出力されるように、mysql_...()関数を使用するステートメントはmysql_error()内部に含まれていることに注意してください。die()また、echoステートメントの二重引用符で囲まれた文字列内の括弧で配列参照を囲んで、単純化し、複数の連結を排除しました。

于 2012-10-29T17:38:20.363 に答える
0
<SELECT>
<?php

//added error checking.
if (!($con = mysql_connect("localhost", "root", "123456")))
{
    die("Could not connect to database server. " . mysql_errno() . " => " . mysql_error());
}

//added error checking.
if (!mysql_select_db("aplikace",$con))
{
    die("Could not select database. " . mysql_errno() . " => " . mysql_error());
}

//removed *, pushed ORDER BY onto same line
$sql = "SELECT kod FROM protokoly ORDER BY kod";

//added error checking. added connection parameter
if (!($rs = mysql_query($sql,$con)))
{
    die("Could not execute query. " . mysql_errno() . " => " . mysql_error());
}

//added condition
if (($nr = mysql_num_rows($rs)) == 0)
{
    die("No options to give!");
}

//changed to while loop that checks result of function return
while ($r = mysql_fetch_array($rs))
{
    //changed " to ' to get rid of \"
    echo '<OPTION VALUE="' . $r["kod"] . '">' . $r["kod"] . '</OPTION>';
}
?>
</SELECT>
于 2012-10-29T23:10:47.730 に答える