【发布时间】:2016-08-25 14:03:53
【问题描述】:
我在 php 中使用 mysql_real_escape_string() 使用 html php 表单在 mysql 数据库中插入数据。但是在提交时它给出了一个错误,即“警告:mysql_real_escape_string():无法建立到服务器的链接”但没有使用 mysql_real_escape_string() 表单正确提交。 我的php代码是
<?php
if(isset($_POST['add']))
{
require_once('nikhil.php');
$bookname=$_POST['bookname'];
$discription=mysql_real_escape_string($_POST['discription']);
$price=$_POST['price'];
$dir='';
$uploadDir = '';
$fileName = $_FILES['photo']['name'];
$filePath = $uploadDir . $fileName;
if(move_uploaded_file($_FILES["photo"]["tmp_name"],"uploads/".$_FILES["photo"]["name"]))
{
$query_image = "INSERT INTO letDo (photo,bookname,price,discription,publicationName) VALUES ('$filePath','$bookname','$category','$releases','$price','$discription')";
if(mysqli_query($con,$query_image))
{
echo "Stored in: " . "xyz.co " . $_FILES["image"]["name"];
}
else
{
echo 'File name not stored in database';
}
}
else{echo 'File not uploaded';}
}
?>
【问题讨论】:
-
混合mysql和mysqli!!
-
而不是
mysql_real_escape_string($_POST['discription']);尝试使用mysqli_real_escape_string($conn,$_POST['discription']);等等(自己检查其他人)。不要混合使用两者 -
thanxx 'Saty' 和 @Anant 它有效....
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 不要使用手动转义和字符串插值或连接来完成此操作,因为如果您忘记正确转义某些内容,您将创建严重的SQL injection bugs。注意这里的$bookname没有被转义,所以这段代码是易受攻击的。