Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
PHP不会将*部分*字符串写入mysql_Php_Mysql - Fatal编程技术网

PHP不会将*部分*字符串写入mysql

PHP不会将*部分*字符串写入mysql,php,mysql,Php,Mysql,基本上是将字符串写入数据库中的条目 该字符串由$FIRSTDELF和$SECONDA半连接而成$第二部分是从文件上传表单中提取的 var_dump()反复表示这两个变量在mysql语句前后都工作正常。但它只写入连接字符串的$firsthalf部分。我假设在某个时刻$secondhalf只是空的,但根据var_dump(),它不是空的 这是代码 <?php $firsthalf="0000"; $secondhalf=($_FILES['file']['name']); var_dump($

基本上是将字符串写入数据库中的条目

该字符串由$FIRSTDELF和$SECONDA半连接而成$第二部分是从文件上传表单中提取的

var_dump()反复表示这两个变量在mysql语句前后都工作正常。但它只写入连接字符串的$firsthalf部分。我假设在某个时刻$secondhalf只是空的,但根据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:)