PHP不会将*部分*字符串写入mysql
基本上是将字符串写入数据库中的条目 该字符串由$FIRSTDELF和$SECONDA半连接而成$第二部分是从文件上传表单中提取的 var_dump()反复表示这两个变量在mysql语句前后都工作正常。但它只写入连接字符串的$firsthalf部分。我假设在某个时刻$secondhalf只是空的,但根据var_dump(),它不是空的 这是代码PHP不会将*部分*字符串写入mysql,php,mysql,Php,Mysql,基本上是将字符串写入数据库中的条目 该字符串由$FIRSTDELF和$SECONDA半连接而成$第二部分是从文件上传表单中提取的 var_dump()反复表示这两个变量在mysql语句前后都工作正常。但它只写入连接字符串的$firsthalf部分。我假设在某个时刻$secondhalf只是空的,但根据var_dump(),它不是空的 这是代码 <?php $firsthalf="0000"; $secondhalf=($_FILES['file']['name']); var_dump($
<?php
$firsthalf="0000";
$secondhalf=($_FILES['file']['name']);
var_dump($secondhalf); //success!
$TheFileName = $firsthalf.$secondhalf;
var_dump($TheFileName); //success!
/* Write to db */
$table = "category_images";
mysql_connect($dbhost,$dbuser,$dbpassword) or die("Unable to connect to database");
@mysql_select_db($dbname) or die("Unable to select
database $dbname");
$sqlquery = "INSERT INTO $table
VALUES('$category_id','$TheFileName')";
$results = mysql_query($sqlquery);
mysql_close($link);
/* End write to database */
//Database reads the category number and the $firsthalf.
//Magically, the $secondhalf goes disappears!
var_dump($TheFileName); //success, it's still good…wtf?
?>
<form id="Upload" action="./" enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="240000">
<input id="file" type="file" name="file">
<input id="submit" type="submit" name="submit" value="Upload me!">
</form>
文件名是否包含任何特殊字符
将第二行替换为:
$secondhalf=mysql\u real\u escape\u字符串($\u FILES['file']['name'])代码>
这将确保您的文件名为查询的正确格式
正如Dagon所指出的:确保数据库中的字段类型正确,长度合适。我看不出您的代码有任何问题:S,我对它进行了测试,得到了一个很好的查询,你可以提供更多的细节,顺便说一句,我希望这不是你的全部代码,因为你不检查文件上传是否发生,你只是在每次加载页面时继续执行查询。。。更不用说你的查询是不安全的,你需要把MAX_FILE_SIZE作为一个常量放在你的PHP代码中,而不是放在你的HTML中:你可以用Firebug或such@Dagon我想知道字段类型如何修剪字符串的结尾:)@Danny length and type,尝试将“999FISH”插入int,或将“FISH”插入varchar(1)啊,是的,我忘了长度!顺便说一句,在使用INSERT时,您应该始终指定列,假设任何特定的列顺序只是在自找麻烦。哦,我没有想到这一点。让我移动到我的笔记本电脑上试试。这里是错误的地方:类别id是表的主键。一旦表单第一次加载,它就已经将表单的空白上传数据写入该类别的行。在用户再次尝试上载后,数据库将拒绝该sql语句,因为该行中已经有$FIRSTDELF和$SECONDSTDELF(从开始算起为null)。这可以通过不将其作为主键或仅通过生成“isset”条件来修复。谢谢大家。呸!是的,这就是我的意思,当我说:“你不检查文件上传是否发生,你只是在每次加载页面时继续执行查询”我很高兴你自己找到了答案tho:)