我想从php执行一个mysql查询。
$sql = insert into q_links values ( 'garment.png', 'imgs\ques\p1\garment.png' );
我无法按原样存储网址,而是按照以下方式存储:imgsquesp1garment.png
。但是我希望将网址存储为:imgs\ques\p1\garment.png
。所以我尝试了这个:
$sql = mysql_real_escape_string($sql);
但这样我的$sql
看起来像:
insert into q_links values ( \'garment.png\', \'imgs\\ques\\p1\\garment.png\' );
在mysql数据库中不起作用。
我必须在数据库中插入此URL以供以后使用。网址为imgs\ques\p1\garment.png
。我怎样才能做到这一点?
更新 我尝试了第一条对我有用的评论。
所以解决方案是:
$sql = "insert into q_links values ( 'garment.png', '".mysql_real_escape_string( 'imgs\ques\p1\garment.png' )."' );";
答案 0 :(得分:4)
$url = "imgs\ques\p1\garment.png";
$url = mysql_real_escape_string($url);
$sql = "INSERT INTO q_links VALUES ('garment.png', '$url')";
作为旁注,不推荐使用mysql_ *函数,您应该使用mysqli_*或PDO转到Prepared语句。
PDO中的示例:
$pdo = new PDO("mysql:host=localhost;port=3306;dbname=mydb", "user", "password");
$stmt = $pdo->prepare("INSERT INTO q_links VALUES (?, ?)");
$stmt->execute(array("garment.png", "imgs\ques\p1\garment.png"));
$stmt->closeCursor();
答案 1 :(得分:2)
不要逃避单引号,只有\
$var = "insert into q_links values ( 'garment.png', 'imgs\\ques\\p1\\garment.png');"
答案 2 :(得分:2)
为什么不用正斜杠存储呢?
$sql = insert into q_links values ( 'garment.png', 'imgs/ques/p1/garment.png' );
答案 3 :(得分:2)
仅为img字段添加转义符:
$sql = "insert into q_links values ( 'garment.png', '".mysql_real_escape_string( 'imgs\ques\p1\garment.png' )."' );"
答案 4 :(得分:1)
I can be like this:
$img=addslashes("imgs\ques\p1\garment.png");
$sql=insert into q_links values('garment.png',$img);
and while retriving you can use stripslashe();
答案 5 :(得分:1)
您可以使用此代码在数据库中输入图片网址
$url =mysql_real_escape_string('imgs\ques\p1\garment.png');
$sql = "insert into q_links values ( 'garment.png', '".$url."' );
如果您执行查询: 插入q_links值('garment.png','imgs \ ques \ p1 \ garment.png');
它将成功插入数据库
答案 6 :(得分:0)
使用PDO。无论如何,{@ 1}}已被弃用。
mysql_
使用PDO,您可以准备语句,然后使用所需的exacte变量调用它。它会逃避一切。