#php #mysql #sql
#php #mysql #sql
Вопрос:
У меня есть этот код, и я не знаю, что с ним не так. Он создаст новую таблицу с именем игры, если она не существует, и это работает. Вторая часть, где мы вставляем строку, не работает.
// Create connection
$con=mysql_connect("$mysql_host","$mysql_username","$mysql_password") or die("error");
mysql_select_db("$mysql_database") or die("database not found");
// Create the table if it doesn't exist
$game_exists = (mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$game_name."'"))==1);
if($game_exists == false) {
$game_name = mysql_escape_string($game_name);
mysql_query("CREATE TABLE '".$game_name."' (name text, data text)") or die("Could not create table");
echo "Table created";
} else {
$game_name = mysql_escape_string($game_name);
}
$name = mysql_escape_string($name);
$data = mysql_escape_string($data);
$sql = "INSERT INTO $game_name (name, data) VALUES ('$name', '$data')";
$result = mysql_query($test) or die("Select Error");
echo $result;
Каждый раз он умирает при ошибке выбора. Таблица существует
Комментарии:
1. изменить
($name, $data)
на('$name', '$data')
2. Я просто должен упомянуть, что динамическое создание таблицы для каждой игры не является лучшей практикой, когда речь идет о реляционных базах данных.
3. Спасибо, что рассказали Иоахиму
4. В дополнение к комментарию @JoachimIsaksson, если
$game_name
он получен из пользовательского ввода, это очень плохая идея, посколькуmysql_escape_string
ничего не делает для очистки имени таблицы или столбца.5. О вашей проблеме, используйте современный API базы данных и включите / добавьте обработку ошибок.
Ответ №1:
$test
больше нигде не используется, оно не определено. Я думаю, вы хотите передать $sql
вместо этого.
$result = mysql_query($sql) or die("Select Error");
Комментарии:
1. Бах .. я должен был это увидеть. В любом случае спасибо
Ответ №2:
вы забываете кавычки в своем запросе insert
$sql = "INSERT INTO $game_name (name, data) VALUES ('".$name."', '".$data."')";
а также $test
не существует
$result = mysql_query($sql) or die("Select Error");