Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql for PHP仅适用于某些应用程序_Php_Mysql_Sql Server_Mysqli - Fatal编程技术网

mysql for PHP仅适用于某些应用程序

mysql for PHP仅适用于某些应用程序,php,mysql,sql-server,mysqli,Php,Mysql,Sql Server,Mysqli,我已经创建了一个网站,使用PHP和HTML,它涉及到将数据提交到SQL数据库,但它只是为一些人将数据添加到数据库中。对于它为谁工作和不为谁工作,这是完全随机的 SQL server与网站托管在同一台服务器上,我已在phpmyadmin中检查了我的SQL代码,以确保其正常工作 将数据提交到SQL server的PHP代码如下:- <?php #CHANGING POST VARS TO REG VARS $submit = $_POST['Submit']; $ign = strtolowe

我已经创建了一个网站,使用PHP和HTML,它涉及到将数据提交到SQL数据库,但它只是为一些人将数据添加到数据库中。对于它为谁工作和不为谁工作,这是完全随机的

SQL server与网站托管在同一台服务器上,我已在phpmyadmin中检查了我的SQL代码,以确保其正常工作

将数据提交到SQL server的PHP代码如下:-

<?php
#CHANGING POST VARS TO REG VARS
$submit = $_POST['Submit'];
$ign = strtolower($_POST['ign']);
$name = $_POST['rname'];
$email = $_POST['email'];
$age = $_POST['age'];
$reason = $_POST['reason'];
$duration = $_POST['duration'];
$date = date('Y-m-d');

if (isset($_POST['past_yes'])){
    $pe = "1";
}else{
    $pe = "0";
}

if ($ign !== "" and $name !== "" and $email !== "" and $age !== "" and $reason !== "" and $duration !== "" and isset($_POST['Submit'])){
    $conn = mysql_connect("localhost", "wadmin", "CENSORED", "DibDibCraft-API");
    $data = "INSERT INTO `custom_staffapp`
    (`ign`,`name`,`email`,`age`,`reason`,`past`,`duration`,`date`)
    VALUES('$ign','$name','$email','$age','$reason','$pe','$duration', '$date')";
    mysql_query($conn, $data);
    mysql_close($conn);
    sleep(0.5);
    $ign = "";
    $name = "";
    $email = "";
    $age = "";
    $reason = "";
    $duration = "";
    $pe = "";
    header("Location: http://www.dibdibcraft.com/staff/apply_done");
}else $error = true;
?>

考虑到问题是由于用户输入单引号和双引号而导致的代码中断。
我将提出以下快速解决方案。在将输入保存到数据库之前过滤所有输入

在文件开头添加以下内容

function filter(&$array) {
$clean = array();
foreach($array as $key => &$value ) {
    if( is_array($value) ) {
        filter($value);
    } else {
        $value = trim(strip_tags($value));
        if (get_magic_quotes_gpc()) {
            $data = stripslashes($value);
        }
        $data = mysql_real_escape_string($value);
    }
 }
}

filter($_POST); # filters $_POST and any nested arrays by reference

上面的函数将递归地过滤所有元素,并对它们进行清理,以便连接到
INSERT-INTO
sql语句中。而且您的脚本在保存到数据库时不应该出现错误行为。

我用一种非常简单的方法解决了这个问题。这可能不是最好的方法,但它是一个单行程序(对于每个变量),在我的例子中工作得非常好

而不是像这样向数据库中插入变量<代码>$reason=$\u POST['reason']

我在PHP中使用了
addslashes()
stripslashes()
函数。
因此,在向数据库提交数据时,您可以执行以下操作:

$reason = "My name is 'aaron'";
$reason = addslashes($_POST['reason']);
echo($reason);
这会回来

我叫艾伦

然后,要删除斜杠,请使用
stripslashes()
函数:-

$reason = stripslashes($reason);
echo($reason);
这会回来

我叫亚伦


感谢所有回答的人,但这似乎是解决这个问题的最好、最简单、最快的方法

这是个骗局。您没有使用参数化查询,并且遇到的引用问题破坏了您的sql,这是一个主要的安全问题。很抱歉听起来像一个noob,但我如何解决它?您能否提供一个重现该问题的示例?我怀疑这是因为您直接在sql中使用用户提供的数据。对于e、 如果有人在你的reason textarea中使用双引号,那么这将损坏你的sql。使用mysql\u real\u escape\u string()来防止此类问题(最好是准备好的语句)。首先,编辑您的问题以删除您的域名。比如,现在。然后阅读这个并使用那个api。那么你如何用这个从数据库中读取数据,因为当我来读取数据时,它不会显示任何内容…答案已更新。。。如果问题是输入清理,则使用该方法将使所有数据库插入成功。从数据库读取是另一项任务。kk,谢谢。我会投票支持你,但我是新用户,所以我不能。索兹。