PHP и MySQL: усекать несколько таблиц - PullRequest
2 голосов
/ 16 января 2011

Я пытался обрезать таблицу, но почему она не работает?что-то не так в запросе к базе данных?

$sql = "TRUNCATE TABLE `table_name`";

$result = $connection -> query($sql);

В идеале я хочу обрезать все таблицы за один раз - возможно ли это?

, если вам интересно, что находится внутри класса, который я используючтобы выполнить запросы к базе данных, вот оно,

#connects the database and handling the result
class __database {

 protected $connection = null;
 protected $error = null;

 #make a connection
 public function __construct($hostname,$username,$password,$database)
 {
  $this -> connection = new mysqli($hostname,$username,$password,$database);

  if (mysqli_connect_errno()) 
  {
   printf("Connect failed: %s\n", mysqli_connect_error());
   exit();
  }
 }

 ...

 #performs a query on the database
 public function query($query)
 {
  $result = $this -> connection -> query($query); 
  if($result) 
  {
   return $result;
  } 
  else
  {
   $this -> error = $this -> connection -> error;
   return false;
  }

 }


 #display error
 public function get_error() 
 {
  return $this -> error;
 }

 #closes the database connection when object is destroyed.
    public function __destruct()
    {
        $this -> connection -> close();
    }
}

спасибо.

edit:

ниже показано, как я вызываю объект db,

# the host used to access DB
define('DB_HOST', 'localhost');

# the username used to access DB
define('DB_USER', 'root');

# the password for the username
define('DB_PASS', 'xxx');

# the name of your databse 
define('DB_NAME', 'xxx'); 

$connection = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);

Ответы [ 3 ]

1 голос
/ 16 января 2011

спасибо за помощь, ребята! вот мой ответ,

# truncate data from all table
# $sql = "SHOW TABLES IN 1hundred_2011";
# or,
$sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '".DB_NAME."'";

# use the instantiated db connection object from the init.php, to process the query
$tables = $connection -> fetch_all($sql);
//print_r($tables);

foreach($tables as $table) 
{
    //echo $table['TABLE_NAME'].'<br/>';

    # truncate data from this table
    # $sql = "TRUNCATE TABLE `developer_configurations_cms`";

    # use the instantiated db connection object from the init.php, to process the query
    # $result = $connection -> query($sql);

    # truncate data from this table
    $sql = "TRUNCATE TABLE `".$table['TABLE_NAME']."`";

    # use the instantiated db connection object from the init.php, to process the query
    $result = $connection -> query($sql);
}
1 голос
/ 16 января 2011

По справочному руководству MySQL

http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html

Вы можете удалить только одну таблицу за раз, используя TRUNCATE.

Вы можете попробовать выполнить несколько запросов в одном запросе PHP, используя ";" разделитель между ними.

0 голосов
/ 16 января 2011

У вас есть пара разных опций.

  • Запустите запрос для каждого усечения
  • Создайте хранимую процедуру, которая будет усекать все таблицы, которые вы хотите сделать.1007 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...