小编nut*_*nut的帖子

带有foreach和fetch的PHP PDO

以下代码:

<?php
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
    echo "Connection is successful!<br/>";
    $sql = "SELECT * FROM users";
    $users = $dbh->query($sql);
    foreach ($users as $row) {
        print $row["name"] . "-" . $row["sex"] ."<br/>";
    }
    foreach ($users as $row) {
        print $row["name"] . "-" . $row["sex"] ."<br/>";
    }
    $dbh = null;
}
catch (PDOexception $e) {
    echo "Error is: " . $e-> etmessage();
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

Connection is successful!

person A-male
person B-female
Run Code Online (Sandbox Code Playgroud)

两次运行"foreach"不是我的目的,我只是好奇为什么两个"foreach"语句只输出一次结果?

以下是类似的情况:

<?php
try {
    $dbh = …
Run Code Online (Sandbox Code Playgroud)

php mysql foreach pdo fetch

16
推荐指数
3
解决办法
10万
查看次数

php静态属性

我有两个代码片段(关于static关键字),我希望它们具有相同的输出,但实际上输出是不同的.

问题是为什么?

片段1

class base
{
    public static $var = 1;
}

class sub extends base
{
    public static $var = 2;
}

echo base::$var; // Outputs 1
Run Code Online (Sandbox Code Playgroud)

1

片段2

class base2
{
    public static $var2 = 1;
}

class sub2 extends base2
{
}

sub2::$var2 = 2;
echo base2::$var2; // Outputs 2
Run Code Online (Sandbox Code Playgroud)

2

php static class

14
推荐指数
2
解决办法
3万
查看次数

PHP验证文件上载

我是一名PHP初学者,目前正在学习"验证文件上传"部分.

我创建了一个包含以下代码的test.php页面:

var_dump(@$_FILES['file']['type']);
Run Code Online (Sandbox Code Playgroud)

首先,我上传了一张图片"img.gif"并返回:

string 'image/gif' (length=9)
Run Code Online (Sandbox Code Playgroud)

然后,我将图像的扩展名更改为".jpg"并返回:

string 'image/jpeg' (length=10)
Run Code Online (Sandbox Code Playgroud)

所以我意识到$ _FILES ["file"] ["type"]只返回上传的文件扩展名,但实际上没有检查它是什么文件.

在这个页面中,http://www.w3schools.com/php/php_file_upload.asp,有一个代码:

$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)

我想知道为什么上面的代码检查文件扩展名两次?我从上面的代码中删除了一些,这是我的新代码:

$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if (($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)

我的代码是否正确?或者你有更好的方法来验证上传文件是图像吗?

谢谢!

php upload pdo image

8
推荐指数
1
解决办法
5万
查看次数

共享Apache 2.0模块与静态Apache模块

我是从http://www.php.net/manual/en/configure.about.php找到的

这些是PHP编译的配置选项

--with-apache[=DIR]
    Build a static Apache module. DIR is the top-level Apache build directory, defaults to /usr/local/apache.

--with-apxs2[=FILE]
    Build shared Apache 2.0 module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs.
Run Code Online (Sandbox Code Playgroud)

静态和共享的含义是什么?

php linux apache compilation

6
推荐指数
1
解决办法
4091
查看次数

PHP:$ _FILES ["file"] ["type"]没用

var_dump(@$_FILES['file']['type'])用来测试我上传的文件类型

首先,我上传了一个exe file名为" uninstall.exe",然后返回

"string 'application/octet-stream' (length=24)"
Run Code Online (Sandbox Code Playgroud)

然后,我将此文件重命名为uninstall.png,它返回

string 'image/png' (length=9)
Run Code Online (Sandbox Code Playgroud)

我的结论是:$ _FILES ['file'] ['type']只检查文件扩展名,而不是原始文件类型.

以下代码来自w3cschool:

$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)

我认为$_FILES["file"]["type"]在上面的代码是不必要的,我们可以使用explode()和检查文件扩展名in_array

我只是一个php初学者,有人可以证实我的想法吗?谢谢!

php file

5
推荐指数
2
解决办法
4万
查看次数

学习mysqli和pdo

我是一个php和mysql初学者,我目前正在学习一个名为"使用php从web访问mysql数据库"的部分,在本书中,作者只使用了mysqli的例子,但当我搜索谷歌时,我发现pdo比mysqli好一些,我的问题是:我应该逃避书中的mysqli并且只学习pdo(来自网络)吗?

php mysql mysqli pdo

3
推荐指数
1
解决办法
2079
查看次数

PHP:是否可以从文件内容(字符串)创建SplFileObject对象?

例如:

$contents = file_get_contents(image.png);
Run Code Online (Sandbox Code Playgroud)

是否可以从$ contents创建SplFileObject对象?

谢谢!

php file object

2
推荐指数
1
解决办法
3474
查看次数

Chrome CSS过渡+文字阴影问题

a {
    transition: text-shadow, 0.5s, ease;
    display: block;
    padding: 20px 0px 20px 0px;
    color: #fff;
    text-shadow:  #343434 1px 1px 1px;
    text-decoration: none;
}

a:hover {
    color: #fff;
    text-shadow:
        #343434 1px 1px 1px,
        0 0 10px #fff,
        0 0 20px #fff,
        0 0 30px #fff,
        0 0 40px #ff00de,
        0 0 70px #ff00de,
        0 0 80px #ff00de,
        0 0 100px #ff00de,
        0 0 150px #ff00de;  
    text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud)

转换+文本阴影与firefox完美无瑕,但不使用chrome,任何人都知道如何解决这个问题?

请用firefox然后chrome打开以下链接,你会看到差异;

http://jsfiddle.net/tfKE8/

感谢帮助!

PS:我试过-webkit-transition,它不会起作用

css transition webkit google-chrome css3

2
推荐指数
1
解决办法
6828
查看次数

mysql子查询where和group by

我正在学习mysql手册:http: //dev.mysql.com/doc/refman/5.6/en/example-maximum-column-group-row.html我和"where.s1.article =混淆了s2.article'部分,这是什么意思?

Task: For each article, find the dealer or dealers with the most expensive price.

+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|    0001 | A      |  3.45 |
|    0001 | B      |  3.99 |
|    0002 | A      | 10.99 |
|    0003 | B      |  1.45 |
|    0003 | C      |  1.69 |
|    0003 | D      |  1.25 |
|    0004 | D      | 19.95 |
+---------+--------+-------+


SELECT article, …
Run Code Online (Sandbox Code Playgroud)

mysql group-by subquery where

1
推荐指数
1
解决办法
2万
查看次数

Mysql外键错误150

我是一个mysql初学者,我正在研究外键.我想创建三个表:用户,项目,订单并将它们链接在一起

用户表:

CREATE TABLE users (
user_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(user_id)
);
Run Code Online (Sandbox Code Playgroud)

物品表:

CREATE TABLE items (
item_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(item_id)
);
Run Code Online (Sandbox Code Playgroud)

订单表:

CREATE TABLE orders (
order_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
item_id INT,
quantity INT(10) NOT NULL,
user_id INT,
PRIMARY KEY (order_id),
FOREIGN KEY (item_id) REFERENCES items (item_id),
FOREIGN KEY (user_id) REFERENCES users (user_id)
);
Run Code Online (Sandbox Code Playgroud)

但我收到错误1005:无法创建表'new.orders'(错误:150)

我的代码出了什么问题?

谢谢!

mysql foreign-keys

1
推荐指数
1
解决办法
202
查看次数