0

これが私の作成クエリです。問題なく動作します...

$pages = "CREATE TABLE pages (id int NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(255), content TEXT, description VARCHAR(255), banner VARCHAR(255), headercol INT, headerdisplay INT, type INT, headersort INT, category INT, footercol INT, footerdisplay INT, footersort INT)";
mysqli_query($dbc, $pages) or die('Error querying database5');

これが挿入クエリで、エラーが返されます...

$jewelry = "INSERT INTO pages (name, description, banner, headerdisplay, type, headersort, category) VALUES ('Jewelry', 'A collection of vintage and contemporary jewelry', 'uploads/banners/jewelry.png', 1, 2, 1, 0)";
mysqli_query($dbc, $jewelry) or die('Error inserting jewelry');
4

2 に答える 2

3

説明のために、2 列目の値にエスケープされていないアポストロフィがあります。

次のように、バックスラッシュでエスケープする必要があります\'

アップデート

変数から挿入する場合は、 で準備済みステートメントを作成し、 でmysqli_prepareパラメーターをバインドする必要がありますmysqli_stmt_bind_param

OOP 方法:

$stmt = $mysqli->prepare("INSERT INTO pages (name, description, banner, headerdisplay, type, headersort, category) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param($name, $description, $banner, $headerDisplay, $type, $headerSort, $category);

または、 PDOまたはその他のデータベース抽象化レイヤーを使用することもできます。

于 2012-10-12T07:05:06.577 に答える
0

これらの2つの関数を使用して、データベースにデータを入力したり、データベースからデータを出力したりします。

/****************************************/
/* Encode special chars                 */
/*                                      */
/****************************************/

function DBin($string) 
{
    return  trim(htmlspecialchars($string,ENT_QUOTES));
}

/****************************************/
/* Decode special chars                 */
/*                                      */
/****************************************/

function DBout($string) 
{
    $string = trim($string);
    return htmlspecialchars_decode($string,ENT_QUOTES);
}
于 2012-10-12T07:13:24.890 に答える