将LaTeX代码插入MySQL

3

我正在使用PHP和MySql。TeX通过表单发布到server.php文件中,并分解成数组:

foreach($_POST['ques'] as $i){  
  $arr = explode('~', $i);
}

$sql = "INSERT INTO `QUESTIONS`(`Text`) VALUES ('$arr[2]')";

$run = mysql_query( $sql, $conn ) or die(mysql_error());

顺便说一下,echo $arr[2]; 显示正确的Tex语法: "[\Rightarrow{z=\frac{43}{-44}}]"

但是在数据库中存储时没有反斜杠 "[Rightarrow{z=frac{43}{-44}}]"


是的,但你到目前为止做了什么?展示一下你如何执行查询。 - Bartek
假设字符串在PHP中正确形成(例如,您没有将其编写为PHP文字并出错),则该字符串在进出数据库时不应更改。确保用于数据库的内容已适当转义-您应该使用参数化查询。 - Hammerite
你的问题似乎与数据库查询参数转义有关。无论如何,你正在编写容易受到SQL注入攻击的代码。幸运的是,这个问题的解决方案与你的问题相同,即使用更现代的数据库库并利用预处理语句。 - Hammerite
谢谢@Hammerite,我会尝试使用参数化查询,并使用新的库。有没有开源库的建议? - Hacktacus
PDO是标准建议。它与所有最近版本的PHP捆绑在一起,并包括MySQL驱动程序。 - Hammerite
@Hacktacus 看看我的回答:mysqli_和PDO都包含在PHP5中。 - Leif Neland
1个回答

1
不要使用旧的mysql_*函数。使用mysqli_*或PDO,就像这个例子一样。
参数化/预处理查询使您不必担心引用和恶意的SQL攻击。(但无论如何还是要安全驾驶)
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$dbh = new PDO($dsn, $user, $password);
$sth = $dbh->prepare("INSERT INTO `QUESTIONS`(`Text`) VALUES (?)");
$sth->execute(array($arr[2]));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接