我有一个数据库,我可以使用pdo类型的连接在这个sql语句中添加内容..:
$sql_createAD = "INSERT INTO `kijilikedb`.`advertise` (`AD_ID`, `AD_NAME`, `REF_STATE`, `REF_USER`, `REF_CAT`, `REF_SUB`, `REF_DESC`, `REG_DATE`, `EXP_DATE`, `AD_TYPE`, `AD_PRICE` , `IMAGE`) VALUES (NULL,'".$_POST['Title']."','".$_POST['state']."','',".$currentCAT.",'".$_POST['sub']."', ".$currentDescId.", '".$today."', '".$EXP."','".$_POST['type']."','".$_POST['Price']."','".mysql_real_escape_string(file_get_contents($_FILES['image']['tmp_name']))."')";
$con->query($sql_createAD );
在大.....我添加一篇文章,其中包含信息和每一个....但是当我使用“.mysql_real_escape_string”将img添加到数据库中时,我应该再使用折旧的方法.. ....所以现在我要替换它...但我读到pfo中没有替代方案......但是我真的可以找到它周围的工作.....所以PLZ帮助我找到它! :D
我发现,如果我使用$ con> prepare()进行插入和执行()将其放入数据库中它可以正常工作......但是对我来说......错误我得到的是: SQLSTATE [HY093]:参数号无效:混合命名和位置参数
看看我做过的尝试:
$query = "INSERT INTO `kijilikedb`.`advertise` (`AD_ID`, `AD_NAME`, `REF_STATE`, `REF_USER`, `REF_CAT`, `REF_SUB`, `REF_DESC`, `REG_DATE`, `EXP_DATE`, `AD_TYPE`, `AD_PRICE` , `IMAGE`) VALUES (NULL,'".$_POST['Title']."','".$_POST['state']."','',".$currentCAT.",'".$_POST['sub']."', ".$currentDescId.", '".$today."', '".$EXP."','".$_POST['type']."','".$_POST['Price']."','".file_get_contents($_FILES['image']['tmp_name'])."')";
$preparedQuery = $con->prepare($query);
$preparedQuery->execute();
答案 0 :(得分:0)
以下是我如何使用带参数的预备语句:
$query = "INSERT INTO kijilikedb.advertise
SET AD_ID = :ad_id,
AD_NAME = :ad_name,
REF_STATE = :ref_state,
REF_USER = :ref_user,
REF_CAT = :ref_cat,
REF_SUB = :ref_sub,
REF_DESC = :ref_desc,
REG_DATE = :reg_date,
EXP_DATE = :exp_date,
AD_TYPE = :ad_type,
AD_PRICE = :ad_price,
IMAGE = :image";
这使用INSERT的替代语法。它更易于阅读,并且更容易将列名称与查询参数占位符进行匹配。但是这种语法不支持多行插入。
接下来,使用您的值创建一个关联数组。键与上面的参数占位符名称匹配(不需要前导冒号字符)。
使用查询参数时,不能使用任何转义字符串方法(FWIW,PDO::quote()会转义,但也会添加引号。)
$values = array(
'ad_id' => NULL,
'ad_name' => $_POST['Title'],
'ref_state' => $_POST['state'],
'ref_user' => '',
'ref_cat' => $currentCAT,
'ref_sub' => $_POST['sub'],
'ref_desc' => $currentDescId,
'reg_date' => $today,
'exp_date' => $EXP,
'ad_type' => $_POST['type'],
'ad_price' => $_POST['Price'],
'image' => file_get_contents($_FILES['image']['tmp_name'])
);
最后,准备/执行是一行简单的两行代码:
$preparedQuery = $con->prepare($query);
$preparedQuery->execute($values);