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

您在第二列值有一个未转义的撇号用于描述。

您应该使用反斜杠对其进行转义,如下所示:\'.

更新

如果你想从一个变量中插入,那么你应该创建一个准备好的语句,mysqli_prepare并用 绑定参数mysqli_stmt_bind_param

例子

面向对象方式:

$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

在将数据输入数据库和从数据库输出时使用这两个功能。

/****************************************/
/* 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 回答