将变量插入MySQL插入语句的正确方法

时间:2014-01-05 05:30:43

标签: php mysql sql variables quotes

我似乎总是遇到将变量放入我的MySQL查询中的问题。

是否有一个很好的教程或有人能告诉我将变量放入语句的正确方法?

我遇到的主要问题是不同类型的引号('或“)。

这是我的问题:

$sql = "INSERT INTO classes (
                        class_name, 
                        user_id, 
                        professor_name, 
                        class_start, 
                        class_end,
                        school_period) 
        VALUES('" . $className 
                . "','" . $userID 
                . "','" . $classProfessor 
                . "','" . $classStart 
                . "','" . $classEnd 
                . "','" . $classPeriod . ");)" 
                . '"';

3 个答案:

答案 0 :(得分:4)

使用prepared statements

<?php
$stmt = $dbh->prepare(
    "INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

答案 1 :(得分:1)

请不要尝试自己制作正确的SQL字符串。 这就是SQL Injections的结果。

How to use placeholders

答案 2 :(得分:-4)

使用准备好的陈述:http://php.net/pdo.prepared-statements 因为这是执行sql的最佳方式