这个INSERT查询有什么问题?

时间:2012-10-12 07:04:08

标签: php mysql

继承我的创建查询,工作得很好......

$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');

2 个答案:

答案 0 :(得分:3)

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

你应该用反斜杠来逃避它,例如:\'

更新

如果要从变量插入,则应创建一个包含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或其他数据库抽象层。

答案 1 :(得分: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);
}
相关问题