Я создаю таблицу, которая выводит список сведений о стране в зависимости от выбора формы … но я продолжаю получать эту ошибку: MDB2 Error: syntax error
. Как я могу исправить этот тип ошибки?
Вот мой код:
<?php $db =& MDB2::connect($dsn); if(PEAR::isError($db)){ die($db->getMessage()); } $table_name="country"; $db->setFetchMode(MDB2_FETCHMODE_ASSOC); $country_id = mysql_real_escape_string($_GET["country_id"]); /* we need to check if venue_id is an integer. if not then we need to return an error if (!preg_match('/^[A-Za-z]+$/', $country_id)) { echo '<h3 class="center">Please enter a valid Country code.</h3>'; echo '<p align="center"><a href="country.htm"><input type="button" value="New Search" class="larger" /></a></p>'; exit; }; */ // collect values from a form sent with method=get $gdp = mysql_real_escape_string($_GET["gdp"]); $population = mysql_real_escape_string($_GET["population"]); $country_name = mysql_real_escape_string($_GET["country_name"]); $gold = mysql_real_escape_string($_GET["gold"]); $bronze = mysql_real_escape_string($_GET["bronze"]); $silver = mysql_real_escape_string($_GET["silver"]); $total = mysql_real_escape_string($_GET["total"]); $sql = "SELECT * FROM $country WHERE country_id='$country_id'"; $res =& $db->query($sql); if (PEAR::isError($res)) { die($res->getMessage()); } ?>
В вашей строке "SELECT * FROM $country WHERE country_id='$country_id'"
переменная $country
не определена, поэтому она будет отображаться как, например, "SELECT * FROM WHERE country_id='1'"
, следовательно, ошибка SQL.
Похоже, вы имели в виду $table_name
, у которого значение 'country'
.
Поскольку это, по-видимому, определяется всего несколькими строками, вероятно, было бы разумнее просто написать его в операторе SQL напрямую, вместо того, чтобы иметь переменную, но, возможно, у вас есть планы по этой переменной позже …