2013-08-18 43 views
0

我有以下插入语句,它工作正常,如果PName没有(')值,但是当文本包含('),查询将返回语法错误。任何想法如何解决这个问题?非常感谢。字符串值在插入语句中包含(')。

$queryinsert = "INSERT INTO CART (CartPID, CartPName, CartPrice,CartCustID, CartDate) values ($pid, '$PName', $PPrice, $CustID, (NOW()))"; 
+3

你应该阅读SQL注入。 – delnan

+0

我试图回复“$ PName”为“$ PName”,但无法正常工作。 – user2649074

+0

您的代码易受[SQL Injection](http://en.m.wikipedia.org/wiki/SQL_injection)攻击的影响。 – akashivskyy

回答

4

您需要在将输入保存到数据库中之前将其转义。例如,用mysql_real_escape_string

$PName = mysql_real_escape_string($PName); 

$queryinsert = "INSERT INTO CART (CartPID, CartPName, CartPrice,CartCustID, CartDate) values ($pid, '$PName', $PPrice, $CustID, (NOW()))"; 

这种情况可能会导致SQL注入,你应该check this topic。首先要做的就是转向准备好的语句,这将为您节省一些SQL注入预防的麻烦。

+0

这就是你最担心的问题,为什么你应该逃避,或者移动到参数化查询有一堆重要的原因 –

+0

谢谢你的回答。它解决了。非常感谢。 – user2649074