Не удается вставить строку PHP SQL

#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");