sql >> Databáze >  >> RDS >> Mysql

PHP:počítadlo líbí/nelíbí se

To, co vidíte, je table je jedním z vyhrazených slov MySQL ale pokoušíte se jej použít jako název sloupce. Váš sloupec se ve skutečnosti nazývá table_name na základě vaší otázky.

Dotaz se zástupnými symboly vypadá takto:

INSERT INTO votes (ip, table_name, imgid) 
  VALUES (?, ?, ?)
  ON DUPLICATE KEY UPDATE
    ip=VALUES(ip),
    table_name= VALUES(table_name),
    imgid=VALUES(imgid)

Pamatujte pomocí mysqli tento dotaz můžete provést takto:

$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();

Dokumentace popisuje tento proces podrobněji, ale "sss" věc odkazuje na tři řetězce a tyto tři hodnoty jsou předány jako parametry.

Pravděpodobně byste měli používat CHOP protože je mnohem méně náročný na použití než mysqli . Ještě lepší by bylo použít databázový rámec jako Doctrine dělat spoustu špinavé práce SQL za vás. Ještě lepší by bylo použít rámec jako CodeIgnighter , CakePHP nebo FuelPHP dát vám základ, na kterém můžete stavět. Ruční vytváření aplikací od základů je extrémně časově náročné a výrazně náchylnější k chybám.

Další věc, kterou je třeba poznamenat, je, že byste se měli ve svém kódu pokusit používat konzistentní pojmenování. Odkazujete na $table jako hodnotu pro table_name , takže by to mělo být pravděpodobně $table_name pro začátek.



  1. Změna databázového řazení, Ctype v Postgresql

  2. Přesouvání textových sloupců zeměpisné šířky/délky do sloupce typu „bod“.

  3. Jak dosáhnout jedinečného automaticky zvýšeného ID pro řádky ve více tabulkách?

  4. PHP Aktualizace MySQL tabulky pomocí HTML formuláře