2014-01-05 107 views
0

我似乎總是有問題將變量存入我的MySQL查詢中。將變量插入MySQL插入語句的正確方法

是否有一個很好的教程,或有人可以告訴我正確的方法來獲取變量的聲明?

我遇到的主要問題是與不同類型的引號(」或「)

這裏是我的查詢:

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

試試這個 '$ SQL = 「INSERT INTO班(CLASS_NAME,USER_ID,professor_name,class_start,class_end,school_period)VALUES('」 的$ className「。 ''」。 $ userID。「','」。 $ classProfessor。 「','」。 $ classStart。 「','」。 $ classEnd。「','」。 $ classPeriod。 「')」;' –

+0

您將需要轉義您的數據。如何做到這一點取決於你正在使用的數據庫庫。 –

+0

@kumar_v你不是逃避它 –

回答

-4

使用預處理語句:http://php.net/pdo.prepared-statements 因爲這是最好的方法來執行SQL

+1

提及變量需要被轉義並且使用mysqli更好或PDO。 –

+0

@AstDerek你是對的,我只是簡化了代碼級別的查詢。作爲**它沒有提到使用哪個數據庫擴展** – dev

+0

從上下文中你可以理解OP的代碼不會逃避任何變量,否則他不會有問題引用或插入的總體想法 –

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();