我很难正确引用SQL字符串,我想知道是否有程序或网站可以帮助我正确引用字符串。我可以在哪里输入SQL字符串,然后网站将为我分析并引用它。或者也许是一个程序..我需要它,因为我遇到了麻烦..
很抱歉没有提供有关我的问题的详细信息,我有这个SQL字符串。我是从一本书中得到的,但是我很难正确地引用它。
$sql = "INSERT INTO books(title, author, isbn, publisher, year, summary) VALUES (" .$conn->quote($_POST['title']) .
', ' . $conn->quote($_POST['author']) .
', ' . $conn->quote($_POST['isbn']) .
', ' . $conn->quote($_POST['publisher']) .
', ' . $conn->quote($_POST['year']) .
', ' . $conn->quote($_POST['summary']) .
')';
你可以看到那里发生了很多报价!我是从一本书中得到的,但是当我需要设置我自己的SQL字符串并且具有相同的难度时,也许我会分裂。
您是否建议网站或程序可以帮助我正确地逃避/引用字符串?
答案 0 :(得分:5)
你能更具体一点吗?在编写ADO.NET代码时,通常使用像这样的SqlParameter对象,它会自动处理所有这些内容:
var cmd = new SqlCommand("select * from foo where fooName = @fooName;", connection);
cmd.Parameters.AddWithValue("@fooName", "O'Reilly is a bloviator");
cmd.ExecuteReader();
答案 1 :(得分:4)
好的,看起来你正在使用PHP。您不应手动引用,而应使用预准备语句。以下是使用PDO执行此操作的一种方法。其他有效的语法在PDOStatement->execute:
中给出$stmt = $db->prepare("INSERT INTO books(title, author, isbn, publisher, year, summary) VALUES(:title, :author, :isbn, :publisher, :year, :summary)");
$title="Hitchhiker's Guide";
$author="Douglas Adams";
$isbn="0345391802";
$publisher="Del Rey";
$year="1995";
$summary="Arthur Dent accidentally saves the world.";
$stmt->bindParam(":title", $title);
$stmt->bindParam(":author", $author);
$stmt->bindParam(":isbn", $isbn);
$stmt->bindParam(":publisher", $publisher);
$stmt->bindParam(":year", $year);
$stmt->bindParam(":summary", $summary);
$stmt->execute();
答案 2 :(得分:0)
在编写sql时最能帮助我的是一个很好的文本编辑器,可以突出显示文本。关于使用哪个文本编辑器有很多讨论。我更喜欢vi,但我是积极的emacs也会这样做,以及eclipse和几乎所有不是普通的旧Windows记事本。
答案 3 :(得分:0)
你有推荐的地方吗? 网站或程序可以帮助我 转义/正确引用字符串?
如果启用了名为magic_quotes_gpc
的设置,则可能不需要在php 中转义字符串。您可以通过在其中编写带有此代码的php文件来确定它是否打开:
<?php
var_dump(get_magic_quotes_gpc());
?>
它将显示bool(true)或bool(false)。如果为false,则使用名为mysql_real_escape_string
的函数进行转义。如果确实如此,您不需要做任何事情,您的输入将自动转义。记住,不要两者都做,你不想逃避两次。或者你也可以使用这个函数来判断你是否需要逃脱:
<?php
function clean($input) {
if (get_magic_quotes_gpc()) {
// magic quotes are on, no need to escape
return $input;
} else {
// magic quotes are off, we need to escape
return mysql_real_escape_string($input);
}
?>
然后就这样使用它:
<?php
$result = mysql_query(sprintf('SELECT * FROM `table` WHERE user="%s"', clean($_POST['user'])));
?>
我无法检查我提交的有关拼写错误的代码,但希望......