0

我正在尝试使用以下 PHP 代码将信息添加到 MySQL 表中。(从 HTML5 基本 Web 表单输入名称和文本。)可能是语法问题?

<?php
include "dbinfo.php"; //contains mysqli_connect information (the $mysqli variable)
//inputs
$name = $_GET["name"];
$text = $_GET["text"];

$sqlqr = 'INSERT INTO `ncool`.`coolbits_table` (`name`, `text`, `date`) VALUES ("$name", "$text", CURRENT_TIMESTAMP);'; //the query. I'm pretty sure that the problem is a syntax one, and is here somewhere.

mysqli_query($mysqli,$sqlqr); //function where the magic happens.
?>

没有错误被抛出。结果是一个空白屏幕,并且将带有“$name”和“$text”的行添加到 MySQL 表中。

4

3 回答 3

2

首先:你应该使用mysqli准备好的语句来防止SQL注入攻击。在没有适当转义的情况下在查询中使用用户输入是不安全的。准备好的语句有助于防止这种情况。

第二:你应该学习字符串引用在PHP中是如何工作的,单引号字符串和双引号字符串是不同的

我建议阅读有关字符串引用的PHP 文档。

于 2013-03-26T16:57:32.230 回答
1

这就是您的代码的外观(添加了 SQL 注入保护):

<?php
include "dbinfo.php"; //contains mysqli_connect information (the $mysqli variable)
//inputs
$name = mysqli_real_escape_string($_GET['name']);
$text = mysqli_real_escape_string($_GET['text']);

$sqlqr = "INSERT INTO `ncool`.`coolbits_table` (`name`, `text`, `date`) VALUES ('" . $name . "', '" . $text . "', CURRENT_TIMESTAMP);";

mysqli_query($mysqli,$sqlqr); //function where the magic happens.
?>

看看我做了什么。首先,我已经将您要检索的用户输入转义到$nameand$text变量中(出于安全原因,这几乎是必须的),并且正如其他人建议的那样,您最好使用准备好的语句。

问题是您没有用单引号 (') 包围字符串值,这是 SQL 语法的要求。

我希望这有助于回答你的问题。

于 2013-03-26T17:10:18.243 回答
-3
   $sqlqr = 'INSERT INTO `ncool`.`coolbits_table` (`name`, `text`, `date`) VALUES ("'.$name.'", "'.$text.'", CURRENT_TIMESTAMP)';

将您的变量放在引号之外。

于 2013-03-26T16:56:09.240 回答