无法将链接插入mysql数据库

时间:2013-05-03 15:32:24

标签: php sql hyperlink insert

以下是我的插入代码的一部分让我烦恼:

$recepient="test@email.com";
$text="Please track: http://wwwapps.ups.com/WebTracking/processInputRequest?HTMLVersion=5.0&loc=en_US&Requester=UPSHome&tracknum=123456789&AgreeToTermsAndConditions=yes&ignore=&track.x=24&track.y=9";
$date="2013-05-03 08:12:20"; 
$through="mail";
$status=1;
$q = "INSERT INTO `messages` (`recepient`,`text`,`date`,`through`,`status`) VALUES('".mysql_real_escape_string($to)."','".mysql_real_escape_string($text)."','".date("Y-m-d H:i:s")."','".mysql_real_escape_string($rowuser['through'])."','".intval($status)."')";
try {$db->query($q);} catch(PDOException $ex) {echp" Error: ".$ex.);}

如果我从$ text变量中删除链接,我可以看到添加到数据库的数据。但在我需要它添加链接的方式 - 脚本停止不报告任何错误。

4 个答案:

答案 0 :(得分:0)

使用PDO强大的预备语句

$q  = "INSERT INTO messages (recepient,text,date,through,status) ";
$q .= "VALUES (:to,:text,:date,:through,:status)";

$dbinsert = $db->prepare($q);
$dbinsert->execute(array(
    ':to' => $recipient,
    ':text' => $text,
    ':date' => $date,
    ':through' => $through,
    ':status' => $status));

这应该这样做。
让PDO负责逃避。

答案 1 :(得分:0)

看起来你正在混合数据库库,或者自己包装好了。

如果您使用mysqli或PDO之类的内容进行->query()来电,则mysql_real_escape_string()工作。 m_r_e_s()需要与DB的活动连接才能运行。在mysql,mysqli和PDO中建立的连接在库之间是 NOT 可共享。

这意味着你的m_r_e_s()调用将返回一个失败的布尔值FALSE,你的查询实际上看起来像:

$q = "INSERT .... VAALUES ('', '', '', etc...)";

答案 2 :(得分:0)

数据库中text列的大小是多少?这主要不是原因,但我注意到你的$text 190 字符很长。

答案 3 :(得分:0)

问题在于 $ text 变量中的“?”符号。当它被放入查询时,它被视为占位符,并且$ db->查询需要一组变量。 解决方案是使用占位符而不是 $ text 变量,并将 $ text 变量提交为params:

$ar[0]=$text;
$q = "INSERT INTO `messages` (`recepient`,`text`,`date`,`through`,`status`)";
$q.= " VALUES('".$to."',?,'".date("Y-m-d H:i:s")."','".$through."',".$status.")";
$db->query($q,$ar);